我刚从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")
. 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
. 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
答案 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.equal
和unique
功能进行测试。
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匹配的确切行数,并可能识别您的问题