欠損値のあるデータが与えられた場合、代入は、欠損値をいくつかの値で置き換えるプロセスです。目標は、NA で示される欠損値のある行を無視することです。このような行は、データのコンポーネントと見なされる可能性があるため、このプロセスはアイテム代入と呼ばれます。
入力
df1 <- data.frame(ID=c(1,2,5,6),V1=c(7,77,777,NA))
df2 <- data.frame(ID=c(1,3,5,6),V2=c(6,66,666,6666))
df3 <- data.frame(ID=c(1,3,5,6),V3=c(9,NA,999,9999))
または、欠損値が NA でマークされている CSV 形式
data.csv data2.csv data3.csv
ID V1 ID V2 ID V3
1 7 1 6 1 9
2 77 2 NA 2 NA
3 NA 3 66 3 NA
4 NA 4 NA 4 NA
5 777 5 666 5 999
6 NA 6 6666 6 9999
出力
期待される結果は
ID V1 V2 V3
1 7 6 9
5 777 666 999
ここでは、NA 値のない行だけが必要でした。
入力データを列 V1、V2、V3、および行に NA のない共通の列 ID とマージする方法は?
共通 ID を持ち、NA を持たない列をマージするための SQLDF を使用したソリューションの例
library(sqldf)
# Read in the data: with CSV, you can use read.csv or fread from data.table
df1 <- data.frame(ID=c(1,2,5,6),V1=c(7,77,777,NA))
df2 <- data.frame(ID=c(1,3,5,6),V2=c(6,66,666,6666))
df3 <- data.frame(ID=c(1,3,5,6),V3=c(9,NA,999,9999))
#
sqldf("SELECT a.ID, a.V1, b.V2, c.V3 FROM df1 a, df2 b, df3 c WHERE a.ID=b.ID AND b.ID=c.ID AND V1!='NA'")
結果として
ID V1 V2 V3
1 1 7 6 9
2 5 777 666 999