2
> imqd = read.csv("csv/quest/IMQ.csv")
> demod = read.csv("csv/DEMO.csv")
> mcqd = read.csv("csv/quest/MCQ.csv")
> 
> length(demod)
[1] 145
> length(demod[[1]])
[1] 9965
> length(mcqd)
[1] 168
> length(mcqd[[1]])
[1] 9493
> length(imqd)
[1] 5
> length(imqd[[1]])
[1] 9965
> 
> mydata = merge(imqd, demod)
> length(mydata)
[1] 148
> length(mydata[[1]])
[1] 9965

ここまでは順調ですね。しかし、何かをマージしようとするとmcqd、データが適切に見えても、ほとんどの行が失われます。

> intersect(intersect(names(imqd), names(mcqd)), names(demod))
[1] "X"    "seqn"

> finaldata = merge(mydata, mcqd)
> length(finaldata)
[1] 314
> length(finaldata[[1]])
[1] 18

なぜ現在18行しかないのですか?

家で一緒に遊びたい場合は、こちらから csv ファイルを入手できます

4

1 に答える 1

1

merge共通の各列に一致する行のみを返そうとしています。MCQ.csvを見ると、20 行目から始まっていることがわかります

"19",20,2,NA,

mergeこの行は使用しません。共通の列 (最初の列と 2 番目の列) の両方が、すべてのファイルに一致するわけではありません。マージするデータのpkは明らかにseqn. byしたがって、次の引数を単純に使用できますmerge

> finaldata = merge(mydata, mcqd, by="seqn")
于 2012-06-25T21:57:13.710 に答える