如何使用另一列中的值和条件填充一列

时间:2019-10-09 19:45:53

标签: r

我在“ WT”列中有值,但是某些值需要减去0.01来进行校正。我想用Office值为“ 1”的更正值和Office值为“ 2”的相等值填充我的dataframe(df)中的新列“ FinalWT”。

我有什么:

Office  WT        
1       0.014   
2       0.456     
2       0.005     
1       0.051     

我想完成的事情

Office  WT        FinalWT
1       0.014     0.004
2       0.456     0.456
2       0.005     0.005
1       0.051     0.041

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

我们可以将0.01与逻辑表达式相乘,以便对于TRUE,输出为0.01,否则为0,然后从'WT'中减去

library(dplyr)
df1 %>%
      mutate(FinalWT = WT - 0.01 * (Office == 1))
#  Office    WT FinalWT
#1      1 0.014   0.004
#2      2 0.456   0.456
#3      2 0.005   0.005
#4      1 0.051   0.041

或者在base r

df1$FinalWT  <- with(df1, WT - 0.01 * (Office == 1))

数据

df1 <- structure(list(Office = c(1L, 2L, 2L, 1L), WT = c(0.014, 0.456, 
0.005, 0.051)), class = "data.frame", row.names = c(NA, -4L))