R:从数据框中选取前30个组

3

我正试图找到一种方法来对我的数据框的前30个组进行子集处理(总共171个,长度不等)。

这是一个较小的虚拟数据框,我一直在练习如何使用它(在这种情况下,我只尝试对前3个组进行子抽样):

groups=c(rep("A",times=5),rep("B",times=2), rep("C",times=3),rep("D",times=2), rep("E",times=8)) value=c(1,2,4,3,5,7,6,8,7,5,2,3,5,7,1,1,2,3,5,4) dummy<-data.frame(groups,value)

到目前为止,我已经尝试了以下变化:

subset<-c("A","B","C") dummy2<-dummy[dummy$groups==subset,]

但我收到了以下警告:更长的对象长度不是较短对象长度的倍数

有人知道如何解决这个问题或者是否还有其他选项吗?


如果你用 %in% 替换 ==,那么你应该得到想要的结果:dummy2<-dummy[dummy$groups %in% subset,] - Ronak Shah
1个回答

2
我们可以使用来自dplyr的filter函数。使用head获取“groups”的前n个唯一元素,使用%in%在filter中返回一个逻辑向量以对行进行子集筛选。请保留html标签。
library(dplyr)
n <- 4
dummy %>% 
     filter(groups %in% head(unique(groups), n))

或者在 base R 中使用 subset

subset(dummy, groups %in% head(unique(groups), n))

== 可以用于长度相等的向量(逐元素比较),或者当第二个向量的 length 为1时。对于多个元素,请使用 %in%


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接