【发布时间】:2018-08-24 21:29:39
【问题描述】:
我在下面有一个数据集:
Col1 Col2 Spend
A 0 100
A 0 100
B 0 100
C 0 100
D 0 200
我想写一个 ifelse 语句说明,如果 Col2 的和大于 0,则设置 Col2 = Spend。如果 Col2 的总和不大于 0,则仅将 Spend Column 应用于值不等于 A 的相应行,并将其余的保留为 Col2 原始值。
我希望我的最终输出如下所示:
Col1 Col2 Spend
A 0 100
A 0 100
B 100 100
C 100 100
D 200 200
我想应该是这样的:
df$Col2 <- ifelse(sum(df$Col2)>0, df$Spend, ifelse(df$Col1!="A", df$Spend, df$Col2))
我的问题是,当我运行它时,我再次检查 Col2 的总和,它仍然没有改变。不知道我在这里做错了什么。
【问题讨论】:
-
试试这个:
if (sum(df$Col2)>0) df$Spend else ifelse(df$Col1!="A", df$Spend, df$Col2)。请注意,“ifelse 返回一个与 test... 形状相同的值”,并且因为sum(df$Col2)>0仅返回一个 T 或 F,所以这将返回一个值,然后将其复制以适合您的数据框的列。换句话说,您的ifelse返回一个0而不是五个。 -
成功了,谢谢!
标签: r if-statement