R 基于多个列上的条件添加列

R 基于多个列上的条件添加列,r,R,我有一个很大的调查数据集。现在我想添加一个专栏,根据参与者对一些问题的回答对他们进行分类 我有以下数据帧: (事实上比这宽得多,大约有120列) 我有以下几项我想考虑的项目:(事实上比3个项目要长) 如何在不为我想考虑的每一列写出一个条件语句的情况下实现这一点? 编辑:在这个问题的第一个版本中,我被告知答案是我的,但事实并非如此。这是因为我不想显式地命名条件中的所有列,而是从列表这样的单个位置获取它们。上述问题中的答案仅在您希望对数据集进行子集划分并且没有要检查的大量条件列表时有效。那么我能做什

我有一个很大的调查数据集。现在我想添加一个专栏,根据参与者对一些问题的回答对他们进行分类

我有以下数据帧: (事实上比这宽得多,大约有120列)

我有以下几项我想考虑的项目:(事实上比3个项目要长)

如何在不为我想考虑的每一列写出一个条件语句的情况下实现这一点?


编辑:在这个问题的第一个版本中,我被告知答案是我的,但事实并非如此。这是因为我不想显式地命名条件中的所有列,而是从列表这样的单个位置获取它们。上述问题中的答案仅在您希望对数据集进行子集划分并且没有要检查的大量条件列表时有效。那么我能做什么呢?

您可以使用以下解决方案:

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")

df类似于:
d[行和(d[,选择器]>3)>0,]
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")