R - 在包含 NA 的同一列中合并 data.frames

标签 r merge dataframe

我有四个 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

,它将是“B”
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/

相关文章:

r - iGraph图形中的顶点名称在哪里

tfs - TFS 中的孤立分支

list - LISP 函数总是返回 nil

python - 合并没有标题的数据框

python - 如何查找并返回具有唯一值的 pandas 数据框行?

python - 在数据透视后对多索引的 pandas 数据帧数据重新排序

python - Pandas 组合多个列(使用 NoneType)

R: reshape 数据框并创建比例

r - 如何对每个矩阵元素的索引应用函数

从 Kaggle 读取数据集