假设我有以下数据框:
df <- data.frame(a=c(1,2,3,3,1), b=(c(1,9,1,2,3)),
c=c(1,2,3,3,9), d=(c(1,2,3,9,1)))
我想总结a + b + c + d的值,但每次这些变量的值都是9时,我想总和3而不是9。
我知道我可以通过使用以下语法重新编码每个变量来完成此任务:
df[,1:4][df[,1:4]==9]<-3
但是我想用一个临时表或一些允许我跳过这一步的代码。最重要的是,我不想错过每个变量的原始值,因为9s对于我需要做的其他操作具有意义。
这是我想要的结果:
df$sum <- c(4,9,10,11,8)
非常感谢,
Yatrosin
答案 0 :(得分:1)
一个选项是replace
元素的值大于或等于9且为3并获得rowSums
df$Sum <- rowSums(replace(df[1:4], df[1:4] >= 9, 3))
df$Sum
#[1] 4 9 10 11 8