2017-07-19 56 views
0

我剛剛開始在R,這可能很簡單,但我們去: 我合併2 csv文件具有相同數量的行由一個共同的列「IID」。每個csv文件的行數是566.當我執行合併時,這相當於568.爲什麼?是否有任何事情被重複計算?合併2個csv文件後行數增加相同的行數

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") 

數據1

. 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

數據2

. 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

如果有一個'「IID」'** **價值於一體,但而不是另一個,那麼將創建一個新行。 – juan

+0

這兩個文件中都有一個IID列。 – Adri

+4

您可能在一個或兩個表中有重複或缺少IID。看看'anyDuplicated(data1 $ IID)'和'anyDuplicated(data2 $ IID)'但真的這個東西只是猜測工作沒有[可重現的例子](https://stackoverflow.com/questions/5963269/how-to- make-a-great-r-reproducible-example) – MrFlick

回答

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)) 
+0

我試過並測試了TRUE。 – Adri

+0

除了數據幀共有的「IIDD」之外的任何變量?或者是每個人中唯一存在的? – pyll

+0

FID是另一個常見變量 – Adri

1

合併和匹配似乎存在一些問題,爲什麼不使用只包含您希望匹配的數據集中的確切值的連接。如果沒有可重複的數據集,它會使這很難。使用相同的輸入作爲@pyll

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

你可以找出確切的行號的NA匹配,並可能確定您的問題

+0

我加了一些數據 – Adri