数据帧的总和值即时重新编码原始变量的某些值

时间:2017-09-29 18:02:54

标签: r dataframe temp-tables rowsum

假设我有以下数据框:

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

1 个答案:

答案 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