【发布时间】:2012-06-25 21:45:18
【问题描述】:
> 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 行?
如果你想在家一起玩,可以get the csv files here。
【问题讨论】:
-
我认为
merge可能并不像您认为的那样。默认情况下,它会对所有匹配的列进行内连接。任何不匹配的东西都会被丢弃,就像在 sql 中一样。您可能想要调查by和all参数。 -
所有三个文件都有两列几乎完全相同。
标签: r csv statistics