我在“ 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
任何帮助将不胜感激。谢谢!
答案 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))