动态重新编码原始变量的某些值的数据帧的总和值
Sum values of dataframe recodifying certain values of original variables on the fly
假设我有以下数据框:
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
但我想用一个临时的 table 或一些允许我跳过此步骤的代码来完成。最重要的是,我不想错过每个变量的原始值,因为 9 对我需要做的其他操作有意义。
这就是我想要的结果:
df$sum <- c(4,9,10,11,8)
非常感谢,
Yatrosin
一个选项是 replace
值大于或等于 9 的元素和 3 并得到 rowSums
df$Sum <- rowSums(replace(df[1:4], df[1:4] >= 9, 3))
df$Sum
#[1] 4 9 10 11 8
假设我有以下数据框:
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
但我想用一个临时的 table 或一些允许我跳过此步骤的代码来完成。最重要的是,我不想错过每个变量的原始值,因为 9 对我需要做的其他操作有意义。
这就是我想要的结果:
df$sum <- c(4,9,10,11,8)
非常感谢,
Yatrosin
一个选项是 replace
值大于或等于 9 的元素和 3 并得到 rowSums
df$Sum <- rowSums(replace(df[1:4], df[1:4] >= 9, 3))
df$Sum
#[1] 4 9 10 11 8