R中的多个if else语句[重复]

Posted

技术标签:

【中文标题】R中的多个if else语句[重复]【英文标题】:Multiple if else statements in R [duplicate] 【发布时间】:2021-03-16 02:28:20 【问题描述】:

我有一个大型数据集(称为“cud1”),我想在其中添加一个新列,将多个初级健康投诉分类为更简单的健康类别(“q2.2_healthCat”)。也就是说,初级健康投诉 1、2、4 或 6 将被归类为“心理健康”(类别 1),响应 3、5、7 或 8 = 疼痛(类别 2),以及所有其他响应(9、10、 11, 12) 被归类为其他 (类别 3)。这是一个基本的数据框,可以让您有所了解:

Participant_ID <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)  
Primary_health_complaint <- c(3, 7, 12, 11, 3, 1, 9, 4, 6, 2)
cud1 <- data.frame(Participant_ID, Primary_health_complaint)

那么我想要一个新的专栏说:

q2.2_healthCat <- c(2, 2, 3, 3, 2, 1, 3, 1, 1, 1)

这是我的尝试(这次使用 case_when):

cud1 <- cud1 %>% mutate(q2.2_healthCat = case_when(
primary_health_complaint = c(1,2,4,6), '1', 
primary_health_complaint = c(3,5,7,8), '2',
primary_health_complaint = c(9,10,11,12), '3')) 

希望有人可以提供帮助!请善待,因为我是 R 新手。我查看了许多其他帖子,但无法弄清楚我做错了什么。

编辑:在这里找到解决方案case_when in mutate pipe 使用以下内容:

 require(data.table) ## 1.9.2+
 setDT(df)
 df[a %in% c(0,1,3,4) | c == 4, g := 3L]
 df[a %in% c(2,5,7) | (a==1 & b==4), g := 2L]

【问题讨论】:

永远不要在 ifelse 语句中使用 &lt;-,无论是条件参数还是是/否参数。当您提供的“数据”不是有效的 R 语法时,很难想象这会起作用。无论如何,由于您使用的是dplyr明确说明非基础包),请查看case_when,它将大大简化您嵌套的ifelse意图。 所以为了澄清,你是说它应该是一个 = 而不是 没有。我是说ifelse 中的 assignment 的前提是合法的,但很少真正需要。 (不过,= 可能会失败,因为它将被解释为命名参数,这不太可能匹配。)顺便说一句,require 的使用不正确,请参阅***.com/a/51263513/3358272。 【参考方案1】:

或许你可以试试下面嵌套的ifelse

within(cud, q2.2_healthCat <- ifelse(Primary_health_complaint %in% c(1, 2, 4, 6), 1, ifelse(Primary_health_complaint %in% c(3, 5, 7, 8), 2, 3)))

给了

   Participant_ID Primary_health_complaint q2.2_healthCat
1               1                        3              2
2               2                        7              2
3               3                       12              3
4               4                       11              3
5               5                        3              2
6               6                        1              1
7               7                        9              3
8               8                        4              1
9               9                        6              1
10             10                        2              1

【讨论】:

以上是关于R中的多个if else语句[重复]的主要内容,如果未能解决你的问题,请参考以下文章

If_else 语句基于多个列,创建一个基于 R 中的真实语句数量平均的分数

为啥我不能使用正则表达式来评估 if...else 语句 [重复]

R中带有重复命令的Switch语句

无论用户输入如何,我的基于用户输入和 if/else 语句的函数都会给出相同的输出[重复]

Javascript IF,ELSE IF总是选择IF语句[重复]

三元?运算符与 C# 中的传统 If-else 运算符 [重复]