【发布时间】:2018-06-17 13:17:49
【问题描述】:
我现在已经使用 R 工作了几个月,但我仍然认为自己是 R 的初学者。感谢这个社区,我已经学到了很多关于 R 的知识。对此我感激不尽。
现在,我有一个问题,不知何故总是会在某个时候回到我身边,并且本质上是如此基本,以至于我有一种感觉,我应该已经在某个时候自己解决了它。
和这个问题有关:filtering data frame based on NA on multiple columns
我有一个 data.frame,其中包含可变数量的列,其中包含名称中的特定字符串(例如“类型”)。
这里是一个简化的例子:
data <- data.frame(name=c("aaa","bbb","ccc","ddd"),
'type_01'=c("match", NA, NA, "match"),
'type_02'=c("part",NA,"match","match"),
'type_03'=c(NA,NA,NA,"part"))
> data
name type_01 type_02 type_03
1 aaa match part <NA>
2 bbb <NA> <NA> <NA>
3 ccc <NA> match <NA>
4 ddd match match part
好的,我知道可以用...过滤列
which(is.na(data$'type_01') & is.na(data$'type_02') & is.na(data$'type_03'))
[1] 2
但是由于类型列的数量在我的数据中是可变的(有时最多 20 个),我宁愿用类似...的东西来获取它们
grep("type", names(data))
[1] 2 3 4
...并将条件应用于所有列,而不是单独指定它们。
在此处的示例中,我正在寻找 NA,但情况可能并非总是如此。
有没有一种简单的方法,可以将条件应用于共享同一个名称的多个列,而无需一一指定?
【问题讨论】:
标签: r dataframe filter conditional-statements