Index   odx1    odx2    odx3    odx4    odx5
1       123     0       0       0       0
2       0       321     0       0       0
3       0       0       0       123     0
4       0       321     0       0       0
5       0       0       0       0       0

我已经在上面附加了我的数据集的样本。我想在R中的多个列之间进行筛选,以对包含123或321这样的数据集进行子集化。

到目前为止,我尝试使用dplyr-
df %>% filter(., odx1==123 | odx2==123 | odx3==123 | odx4==123 | odx5==123 | odx1==321| odx2==321| odx3==321| odx4==321| odx5==321)

尽管上面的方法可行,但是有没有更简洁的方法呢?

我的实际数据集包含odx1-odx25,我有一个大约15个字符串的列表,可以过滤大约100K行。

编辑:

实际的数据集包含数字的随机字符串,但我仅以0为例,以提高可见性和简便性。
Index   odx1    odx2    odx3    odx4    odx5
1       123     421     532     414     981
2       243     321     765     132     321
3       144     322     587     123     444
4       655     321     459     091     676
5       456     421     523     431     768

最佳答案

正如我的评论:

如果数据始终采用这种通用格式(只是想摆脱由全0组成的观察值,那么更快的解决方案(就击键和计算时间而言)将是:

df[rowSums(df[, -1]!=0)!=0,]

08-24 18:40