如何选择部分数据集的第三个20%?

时间:2017-04-17 05:26:47

标签: r

假设我有一个数据集,如:

df<-data.frame(data=(1:100))

如何选择我的数据的第20个?

让我们说,我需要访问第三个20%,其中包含40-60之间的数字

2 个答案:

答案 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