基于If stations R创建一个新列

基于If stations R创建一个新列,r,function,if-statement,R,Function,If Statement,我想知道我是否可以创建基于字符的if语句。这就是 这不是一个真正的代码,如果这是可能的话,我正在努力理解 if {taskStaffName != 'Carl Goss' add 80 else{ if taskStaffName = 'Carl Goss' add 40} else{if taskStaffName='Ama Fh'add 44} 数据样本: taskStaffName false true 1 Ama Fh 11 0 2 Bar

我想知道我是否可以创建基于字符的if语句。这就是

这不是一个真正的代码,如果这是可能的话,我正在努力理解

if {taskStaffName != 'Carl Goss' add 80
else{ if taskStaffName = 'Carl Goss' add 40}
else{if taskStaffName='Ama Fh'add 44}

数据样本:

    taskStaffName false true
1      Ama Fh      11    0
2      Bar Mi      14   88
3     Briny Rey     6    0
4       Ben Le     20   65
5      Co Wams    165  398
6  Don Chrensen     7  106
7    Da Cari        0    5
8    Geth by        9  546
9  Hen Vaeghem     34  157
10   Jemy Haran     2   35
11      Joph Le     9   22
12    Carl Goss    69  360
预期结果:

    taskStaffName false true  Budget
1      Ama Fh      11    0     44
2      Bar Mi      14   88     80
3     Briny Rey     6    0     80
4       Ben Le     20   65     80
5      Co Wams    165  398     80
6  Don Chrensen     7  106     80
7    Da Cari        0    5     80
8    Geth by        9  546     80
9  Hen Vaeghem     34  157     80
10   Jemy Haran     2   35     80
11      Joph Le     9   22     80
12    Carl Goss    69  360     40

是的,我们可以在此处尝试使用
ifelse

df$Budget <- ifelse(df$taskStaffName == "Carl Goss", 40, 80)

在base R中实现这一点的方法是只嵌套调用
ifelse
,但这很快就会变得不可读。

如果它们是两个不同的Ama Fh 11 0 44、Carl Goss 69 360 40和其他80,你会怎么做,对不起,我刚刚编辑了我的帖子。顺便感谢错误:“Exp$Budget”中意外的“=”对不起,我一直在这样做。您需要使用
=
作为相等运算符。请记住,发布到堆栈溢出的大部分代码尚未(有时无法)测试。
df$Budget <- df$Budget + ifelse(df$taskStaffName == "Carl Goss", 40, 80)
df$Budget <- case_when(
    df$taskStaffName == "Carl Goss" ~ 40,
    df$taskStaffName == "Ama Fh" ~ 44,
    TRUE ~ 80
)