【发布时间】:2015-12-09 16:54:57
【问题描述】:
我有两个相同尺寸的数据框(120 万行 x 5000 列)。这些数据帧 df1 和 df2 的子集如下:
df1<-data.frame(A=c(0,0,1),B=c(0,1,0),C=c(2,1,0),D=c(0,NA,0),E=c(1,0,1))
rownames(df1) <- c("A1", "A2", "B1")
df1
# A B C D E
# A1 0 0 2 0 1
# A2 0 1 1 NA 0
# B1 1 0 0 0 1
df2<-data.frame(A=c(106,NA,61),B=c(127,22,10), C=c(9,NA,126), D=c(1,77,54), E=c(99,87,2))
rownames(df2) <- c("A1", "A2", "B1")
df2
# A B C D E
# A1 106 127 9 1 99
# A2 NA 22 NA 77 87
# B1 61 10 126 54 2
我想根据 df2 中的相应值更新 df1 中的值,如下所示: 如果 df2 中的单元格值为 NA 或 df2 中的单元格值小于等于 10,则将 df1 中的对应值更改为 NA。否则,保持 df1 中的值不变。
我能够获得一个逻辑数据框,我认为我可以将其用作某种查找表:
df1A <- df1
df1A <- ifelse(df2<=10, df1==NA, df1==df1)
# A B C D E
# A1 TRUE TRUE NA NA TRUE
# A2 NA TRUE NA NA TRUE
# B1 TRUE NA TRUE TRUE NA
在 df1A 中,每个 TRUE 单元格对应于 df1 中应保持不变的值,每个 NA 单元格对应于 df1 中应更改为(或保持为)NA 的值。但是,我不确定如何使用 df1A 来更新 df1。也不确定这是否是该任务最有效的方法。
任何建议将不胜感激。
【问题讨论】:
标签: r