合并具有相同行数的2个csv文件后增加的行数

时间:2017-07-19 17:16:01

标签: r csv merge

我刚从R开始,这可能很简单,但我们走了: 我通过公共列" IID"合并具有相同行数的2个csv文件。每个csv文件的行数是566.当我执行合并时,这相当于568.为什么?是否有任何重复计算?

data1<-read.csv("lala1.csv", head=T,sep=",")
data2<-read.csv("lala2.csv", head=T,sep=",")
dataMerge<-merge(data1,data2,by="IID")
write.csv(dataMerge, "lala_All_.csv") 

DATA1

. FID IID T1 1 1 26014 0.004755930 2 1 31935 0.006217750 3 2 27841 0.005631550 4 2 32400 0.004967280 5 3 28814 0.005395390 6 3 33276 0.005683260 7 4 29445 0.005079630 8 5 28593 0.004365470 9 5 29851 0.005743720 10 6 29852 0.004015790 11 6 31820 0.005455630 12 7 33386 0.005741080 13 7 37065 0.006015120 14 8 33475 0.004334330 15 8 38487 0.004427610 16 9 34157 0.004991320 17 9 39281 0.005380730 18 10 36963 0.005759670 19 10 39673 0.003827710 20 11 36964 0.006559190

DATA2

. FID IID T2 1 1 26014 0.009336160 2 1 31935 0.011135400 3 2 27841 0.010364200 4 2 32400 0.009077190 5 3 28814 0.009483640 6 3 33276 0.009537670 7 4 29445 0.009054180 8 5 28593 0.008029250 9 5 29851 0.010172700 10 6 29852 0.006687910 11 6 31820 0.009435050 12 7 33386 0.010146600 13 7 37065 0.010533700 14 8 33475 0.007430050 15 8 38487 0.008475400 16 9 34157 0.008564570 17 9 39281 0.009678990 18 10 36963 0.010390400 19 10 39673 0.006431420 20 11 36964 0.011702000

2 个答案:

答案 0 :(得分:1)

您可能遇到不匹配IIDD的问题。考虑这些例子。

df1 <- data.frame(IIDD = c("A", "B", "c", "D"), trait = c('x', 'x', 'x', 'x'))
df2 <- data.frame(IIDD = c("A", "B", "c", "E"), sales = c(400, 200, 700, 500))
df3 <- data.frame(IIDD = c("A", "B", "c", "C"), sales = c(400, 200, 700, 500))

使用all.equalunique功能进行测试。

all.equal(unique(df1$IIDD), unique(df2$IIDD))
all.equal(unique(df1$IIDD), unique(df3$IIDD))

答案 1 :(得分:1)

合并和匹配似乎存在一些问题,为什么不使用只包含您要匹配的数据集中的确切值的连接。如果没有可重复的数据集,它就会变得困难。使用与@pyll相同的输入

library(dplyr)
df <- df1 %>% 
  left_join(df2, "IIDD")
df[is.na(df$sales),]

您可以确定NA匹配的确切行数,并可能识别您的问题