簡體   English   中英

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

[英]R - Merging data.frames in the same column containing NAs

我有四個data.frames,它們都有相同的列,是第一個相同的列。 在變量列中有一些NA。

首先,我想用data.frame的名稱替換每個data.frame中的任何值(不是NA)。 其次,我想合並data.frames。 在這種情況下,對於每個NA,將會有一些其他data.frame,它將具有一個值,因此我將以填充值(或data.frames的名稱)的每個單元格結束。

這是一個包含兩個data.frames的示例:

 >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()選項。 此外,我試圖調整類似問題的答案,但我似乎無法解決這個問題。

創建一個函數,用一個data.frame替換來自另一個data.frame的值

在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”,其中A不是NA 如果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

我寫了一個正是這樣的軟件包,因為我反復向數據庫文盲的人發送部分重疊的excel文件。

我將它上傳到CRAN,它應該很快就可以使用。 那么該做什么呢

> install.packages("datamerge")
> library(datamerge)
> version.merge(A, B, add.values=TRUE)
Rows:  4 from `A` #1
       0 from `B` #2

Columns:
Q  Origin: `A` #1
   Imputed 2 values from `B` #2
W  Origin: `A` #1
   Imputed 2 values from `B` #2
E  Origin: `A` #1
   Imputed 3 values from `B` #2
R  Origin: `A` #1
   Imputed 1 values from `B` #2
T  Origin: `A` #1
   Q W E R T
g1 2 4 4 1 0
g2 3 2 5 4 5
g3 5 1 0 0 0
g4 0 6 4 1 9

如果您想在CRAN之前嘗試它,可以從http://www.anst.uu.se/chrba104/datamerge_1.0-1.tar.gz獲取它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM