我有四个 data.frames,它们都有相同的列,第一个对所有人来说都是一样的。在变量列中有一些 NA。
首先,我想用 data.frame 的名称替换每个 data.frame 中的任何值(不是 NA)。 其次,我想合并data.frames。在这种情况下,对于每个 NA,都会有一些其他的 data.frame 有一个值,所以我会以每个单元格填充值(或 data.frames 的名称)结束。
这是一个包含两个 data.frame 的示例:
>A
name Q W E R T
g1 NA NA 4 NA 0
g2 3 2 NA 4 5
g3 NA 1 NA 0 0
g4 0 NA NA 1 9
>B
name Q W E R T
g1 2 4 NA 1 NA
g2 NA NA 5 NA NA
g3 5 NA 0 NA NA
g4 NA 6 4 NA NA
>result
name Q W E R T
g1 B B A B A
g2 A A B A A
g3 B A B A A
g4 A B B A A
我尝试了一些不同的 merge() 和 union() 选项。此外,我试图调整类似问题的答案,但我似乎无法解决这个问题。
Creating a function to replace NAs from one data.frame with values from another
Merging data frames with missing values in R
提前谢谢你!
最佳答案
这可能不适用于您,但对于提供的数据...
A <- data.frame(Q=c(NA, 3, NA, 0),
W=c(NA, 2, 1, NA),
E=c(4, NA, NA, NA),
R=c(NA, 4, 0, 1),
T=c(0,5,0,9), row.names=paste0('g', 1:4), stringsAsFactors=FALSE)
B <- data.frame(Q=c(2, NA, 5, NA),
W=c(4, NA, NA, 6),
E=c(NA, 5, 0, 4),
R=c(1, NA, NA, NA),
T=c(NA, NA, NA, NA), row.names=paste0('g', 1:4), stringsAsFactors=FALSE)
如果 A
不是 NA
,结果将是“A”。只要 B
不是 NA
result <- A
result[!is.na(A)] <- "A"
result[!is.na(B)] <- "B"
# Q W E R T
#g1 B B A B A
#g2 A A B A A
#g3 B A B A A
#g4 A B B A A
关于R - 在包含 NA 的同一列中合并 data.frames,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11605147/