假设我有一个数据集,如:
df<-data.frame(data=(1:100))
如何选择我的数据的第20个?
让我们说,我需要访问第三个20%,其中包含40-60之间的数字
答案 0 :(得分:2)
使用ntile
包中的dplyr
函数。我们将数据帧分成5个桶,然后取第3个桶。
library(dplyr)
# One line
df[ntile(df$data, 5) == 3, ]
# Using pipes
df %>%
mutate(n = ntile(data, 5)) %>%
filter(n == 3) %>%
select(data)
输出:
[1] 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
答案 1 :(得分:0)
这是一个根据数据行百分比调用特定行的快速函数
rowNumbs <- function(i, perc, df){
((i - 1)*ceiling(perc*nrow(df)) + 1) : (i*ceiling(perc*nrow(df)))
}
其中i是第n组,perc是百分比,df是data.frame。
拨打第三个20%的data.frame:
df[rowNumbs(3, .2, df), ]
[1] 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60