এখানে একটি নমুনা ডেটা ফ্রেম রয়েছে:
d <- data.frame(
x = runif(90),
grp = gl(3, 30)
)
আমি প্রতিটি মানের জন্য d
শীর্ষ 5 টির মান সহ সারিগুলি যুক্ত করার উপসেট চাই ।x
grp
বেস-আর ব্যবহার করে, আমার পদ্ধতির কিছু হবে:
ordered <- d[order(d$x, decreasing = TRUE), ]
splits <- split(ordered, ordered$grp)
heads <- lapply(splits, head)
do.call(rbind, heads)
## x grp
## 1.19 0.8879631 1
## 1.4 0.8844818 1
## 1.12 0.8596197 1
## 1.26 0.8481809 1
## 1.18 0.8461516 1
## 1.29 0.8317092 1
## 2.31 0.9751049 2
## 2.34 0.9269764 2
## 2.57 0.8964114 2
## 2.58 0.8896466 2
## 2.45 0.8888834 2
## 2.35 0.8706823 2
## 3.74 0.9884852 3
## 3.73 0.9837653 3
## 3.83 0.9375398 3
## 3.64 0.9229036 3
## 3.69 0.8021373 3
## 3.86 0.7418946 3
ব্যবহার করে dplyr
, আমি এটি কাজ করবে বলে আশা করি:
d %>%
arrange_(~ desc(x)) %>%
group_by_(~ grp) %>%
head(n = 5)
তবে এটি কেবল সামগ্রিক শীর্ষ 5 টি সারি দেয়।
পুরো রিটার্নের head
জন্য অদলবদল ।top_n
d
d %>%
arrange_(~ desc(x)) %>%
group_by_(~ grp) %>%
top_n(n = 5)
আমি কীভাবে সঠিক উপসেট পাব?