r - 根据几列上的条件添加列
问题描述
我有一个大型的调查数据集。现在我想添加一个列,根据他们对一些问题的回答对一些参与者进行分类。
我有以下数据 框:(实际上比这宽得多,大约 120 列)
age item1 item2 item3 ... item9 question1 question2 ...
18 0 0 4 ... 0 1 2 ...
19 0 4 0 ... 0 5 6 ...
20 4 4 0 ... 4 1 2 ...
21 0 0 4 ... 0 3 4 ...
我有以下要考虑进行分类的项目列表:(实际上比仅 3 个项目要长得多)
selector <- c("item1", "item2", "item9")
现在,我想选择与“至少我的列表中的一项被评为高于 3”标准匹配的每个参与者(行),并向该行添加一个标签。我不能使用“starts_with”之类的东西,因为我不想要所有以“item”开头的项目,而只想要列表中的那些。
结果应如下所示:
age item1 item2 item3 ... item9 question1 question2 ... category
18 0 0 4 ... 0 1 2 ... FALSE
19 0 4 0 ... 0 5 6 ... TRUE
20 4 4 0 ... 4 1 2 ... TRUE
21 0 0 4 ... 0 3 4 ... FALSE
如何在不为我要考虑的每一列写条件语句的情况下实现这一点?
编辑:在这个问题的第一个版本中,有人告诉我这个问题回答了我的问题,但事实并非如此。这是因为我明确不想命名条件中的所有列,而是从一个单独的地方(如列表)获取它们。上述问题中的答案仅在您想要对数据集进行子集化并且没有要检查的大量条件列表时才有效。那么我能做什么呢?
解决方案
您可以使用以下解决方案:
library(dplyr)
library(purrr)
df %>%
mutate(category = pmap_lgl(df %>%
select(selector), ~ any(c(...) > 3)))
age item1 item2 item3 item9 question1 question2 category
1 18 0 0 4 0 1 2 FALSE
2 19 0 4 0 0 5 6 TRUE
3 20 4 4 0 4 1 2 TRUE
4 21 0 0 4 0 3 4 FALSE
数据
df <- read.table(header = TRUE, text = "
age item1 item2 item3 item9 question1 question2
18 0 0 4 0 1 2
19 0 4 0 0 5 6
20 4 4 0 4 1 2
21 0 0 4 0 3 4")
推荐阅读
- kubernetes - 指定 Kubernetes DaemonSet 的调度顺序
- ios - 如何检测使用 openUrl() 进行的呼叫在 ios 中结束
- asp.net - 从 asp.net 自动登录到 wordpress
- macos - SCNView 覆盖导致调整大小时撕裂
- c# - 如何在实体框架中基于 2 个外键制作复合键?
- python - 如何将哈希表中的线性探针转换为二次探针?
- vb.net - 如何顺序执行两个命令
- javascript - angular 5 项目中的数组未定义,但不是
- android - 如何在Android中上传图片后更新活动
- c++ - 在矩阵C ++编程中的特定位置插入元素