R 数据的复杂子集

R 数据的复杂子集,r,subset,R,Subset,考虑下面的数据帧,其中我有7个变量id,A到F id A B C D E F 1 5590 23658 523 727 52903 732569 2 24311 421 4319 5597 32695 4521 3 626 623

考虑下面的数据帧,其中我有7个变量id,A到F

id     A           B          C          D         E         F          
1    5590       23658      523        727       52903     732569
2    24311      421        4319       5597      32695     4521
3    626         623       78
我想要一个新的变量G,其中G只包括a到F中5590或421的观测值

因此,在这种情况下,G只包括id=1和2的观测值


有没有快速扫描R上变量A到F的方法

我们可以使用
apply

df1$G  <- apply(df1[-1], 1, function(x) intersect(x, c(5590, 421))[1])

df1$G这是一个快速而简单的解决方案:

dfr[which(grepl("5590|421 ", apply(dfr, 1, paste0, collapse = " "))),]
     V1    V2   V3   V4    V5     V6
1  5590 23658  523  727 52903 732569
2 24311   421 4319 5597 32695   4521

它通过在
中的那些行上子集
dfr
,函数
grepl
粘贴
d-together行中查找匹配项

您希望第3行中有什么?
> subsetdfr
     V1    V2   V3   V4    V5     V6
1  5590 23658  523  727 52903 732569
2 24311   421 4319 5597 32695   4521
dfr[which(grepl("5590|421 ", apply(dfr, 1, paste0, collapse = " "))),]
     V1    V2   V3   V4    V5     V6
1  5590 23658  523  727 52903 732569
2 24311   421 4319 5597 32695   4521