根据原始数据框两列之间的条件创建新的数据框

时间:2020-02-16 01:44:58

标签: r dataframe dplyr

我有一个3列的数据框,如下所示:

X Y Z
1 4 2
2 3 3
3 1 4

我想创建一个数据框,如果第三列与第二列匹配,则用第一列的值替换第三列。如下面的示例输出所示:

X Y Z=(X+1)
1 4 NA
2 3 2
3 1 NA

我尝试过的代码如下:

library(dplyr)
chk4 %>% chk5
chk4 %>% if(X == Z)
mutate(# Z value to Y where X = Y)

1 个答案:

答案 0 :(得分:1)

如果您想用Y等于Z的值用X的值替换Z列中的值,否则用NA代替:

df$Z = ifelse( df$Z == df$Y, df$X, NA)

其中df是您的数据框。

示例:

df = data.frame(X = c(1,2,3), Y = c(4,3,1), Z = c(2,3,4))
df$Z = ifelse( df$Z == df$Y, df$X, NA)

df
  X Y  Z
1 1 4 NA
2 2 3  2
3 3 1 NA