3

私は4つのdata.framesを持っていますが、それらはすべて同じ列を持ち、最初はすべて同じです。変数列にはいくつかのNAがあります。

まず、各data.frameの値(NAではない)をdata.frameの名前に置き換えたいと思います。次に、data.framesをマージしたいと思います。この場合、NAごとに、その値を持つ他のdata.frameがいくつかあるので、すべてのセルに値(またはdata.framesの名前)を入力して終了します。

次に、2つの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のNAを別のdata.frameの値に置き換える関数を作成する

Rの値が欠落しているデータフレームをマージする

前もって感謝します!

4

2 に答える 2

4

これはあなたにとってはうまく一般化されないかもしれませんが、提供されたデータについては...

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は「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
于 2012-07-23T00:47:13.980 に答える
4

データベースの知識がない人から部分的に重複する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から入手できます。

于 2012-07-23T07:47:17.820 に答える