我有一个大数据框,我想在其中对数据进行子集化。
我做了一个示例表:名称是一个唯一的 ID,V1 总结了所有点 ARx,V2 是我想用它来构建一个子集的值。我想总结所有 IDx (V1),如果一个 V2 > 0。在我的示例表中,我会选择 for selection <- df$V1[which(df$V2>0),]
,这显然会给我所有 V1 ID 的向量,其中 V2 > 0。
姓名 | V1 | V2 |
---|---|---|
AR1.1 | ID1 | 0 |
AR1.2 | ID1 | 0 |
AR2.1 | ID2 | 0 |
AR2.2 | ID2 | 1 |
AR3.1 | ID3 | 0 |
AR3.2 | ID3 | 1 |
AR3.3 | ID3 | 0 |
AR4.1 | ID4 | 2 |
AR4.2 | ID4 | 0 |
现在我的问题来了:我想将 V1 ID 传输到整个数据框,从选择中的选定 ID 中选择所有行,而不管 V2 值如何。意思是,我想要一个子数据框,其中 V1 的所有唯一值都在其中,如果相同 IDx 之一的 V2 > 0。
在我的示例表中,这将是:
姓名 | V1 | V2 |
---|---|---|
AR2.1 | ID2 | 0 |
AR2.2 | ID2 | 1 |
AR3.1 | ID3 | 0 |
AR3.2 | ID3 | 1 |
AR3.3 | ID3 | 0 |
AR4.1 | ID4 | 2 |
AR4.2 | ID4 | 0 |
如何将我的选择向量传输到整个数据框(可能具有匹配的 IDx 名称?)。我which
再次尝试使用和%in%
,但我只创建了一个较小的子集并且无法传输所有 V2=0 V1。有没有更好的方式开始而不是开始which
?
您可以使用%in%
:
selection <- df$V1[df$V2>0]
#selection <- df$V1[which(df$V2>0)] #Alternative
#selection <- unique(selection) #Optional
df[df$V1 %in% selection,]
# Name V1 V2
#3 AR2.1 ID2 0
#4 AR2.2 ID2 1
#5 AR3.1 ID3 0
#6 AR3.2 ID3 1
#7 AR3.3 ID3 0
#8 AR4.1 ID4 2
#9 AR4.2 ID4 0
数据:
df <- data.frame(Name = c("AR1.1", "AR1.2", "AR2.1", "AR2.2", "AR3.1", "AR3.2", "AR3.3", "AR4.1", "AR4.2")
, V1 = c("ID1", "ID1", "ID2", "ID2", "ID3", "ID3", "ID3", "ID4", "ID4")
, V2 = c(0, 0, 0, 1, 0, 1, 0, 2, 0))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句