R数据帧从另一个数据帧条件替换值

时间:2018-06-11 11:43:22

标签: r dataframe conditional-statements

我有两个数据帧。一个有nunbers,一个有状态(TRUE或FALSE)。

df1<-data.frame(A=c(14,25,37),B=c(12,45,23),C=c(65,29,67))
df2<-data.frame(A=c('FALSE','TRUE','TRUE'),B=c('TRUE','FALSE','FALSE'),C=c('TRUE','TRUE','FALSE'))

如果df2为TRUE,我想将值从df1复制到df2。

df3<-data.frame(A=c('FALSE',25,37),B=c(12,'FALSE','FALSE'),C=c(65,29,'FALSE'))

谢谢

1 个答案:

答案 0 :(得分:1)

这是一个选项:

df3 <- df2
df3[df3 == 'TRUE'] <- df1[df3 == 'TRUE']

df3
      A     B     C
1 FALSE    12    65
2    25 FALSE    29
3    37 FALSE FALSE

Demo

注意:要使上述代码逐字处理,我必须略微更改df2的定义以使用stringsAsFactors=FALSE。仅使用字符数据,可以轻松检查'TRUE'