2015-10-27 47 views
0

我有這2個dataframes(反黑datxt):過濾數據幀由科拉姆值與其他2個dataframes

> head(dats) 
    idpatient entryear sex infection 
1   1  1995 Male HCV+ & HIV- 
2   2  1995 Male HCV+ & HIV- 
3   3  1995 Male HCV+ & HIV- 
4   4  1995 Male HCV+ & HIV- 
5   5  1995 Male HCV+ & HIV- 
6   6  1995 Male HCV+ & HIV- 

> head(datxt) 
    idpatient entryear sex infection timeaddic 
1  54  1996 Female HCV+ & HIV-  168 
2  55  1996 Female HCV+ & HIV-  96 
3  56  1996 Female HCV+ & HIV-  108 
4  57  1996 Female HCV+ & HIV-  60 
5  58  1996 Female HCV+ & HIV-  96 
6  59  1996 Male HCV+ & HIV-  24 

在另一邊,我合併這兩個成另一種(mergedDataset):

> tail(**mergedDataset**) 
    idpatient entryear sex infection timeaddic 
358  358  2004 Male HCV+ & HIV+  180 
359  359  2004 Male HCV+ & HIV+  288 
360  360  2004 Female HCV+ & HIV+  192 
361  361  2004 Male HCV+ & HIV-  60 
362  362  2004 Male HCV+ & HIV-  108 
363  363  2004 Male HCV+ & HIV+  252 

我怎麼能提取包括在反黑組及和datxt從患者megedDataset的數據?我試過這個,但沒有工作:

finalData <- mergedData[dats$idpatient == datxt$idpatient,] 

你能幫我嗎?

在此先感謝!

回答

0

如果您使用merge()合併數據集,則新數據集根據參數僅包含兩個數據集中的 對象(由唯一ID確定)。

df1<-data.frame(id= 1:5, x = rnorm(5)) 
df2<-data.frame(id=c(1:3,5:6),y=rnorm(5)) 

>merge(df1,df2) 

    id   x   y 
1 1 0.3623482 -0.1592616 
2 2 -0.8280637 -0.9261413 
3 3 1.0900202 0.2681832 
4 5 0.7551957 -0.1201221 

df<-merge(df1,df2, all = TRUE) 
>df 
id   x   y 
1 1 0.3623482 -0.1592616 
2 2 -0.8280637 -0.9261413 
3 3 1.0900202 0.2681832 
4 4 -0.0620777   NA 
5 5 0.7551957 -0.1201221 
6 6   NA 0.8578393 

最接近你的方法:

ids<-df1$id[df1$id %in% df2$id] 
>df[df$id %in% ids, ] 

    id   x   y 
1 1 0.3623482 -0.1592616 
2 2 -0.8280637 -0.9261413 
3 3 1.0900202 0.2681832 
4 5 0.7551957 -0.1201221 

你嘗試過什麼回報:

filter<-match(df1$id,df2$id) 
>na.omit(df[filter,]) 

    id   x   y 
1 1 0.3623482 -0.1592616 
2 2 -0.8280637 -0.9261413 
3 3 1.0900202 0.2681832 

這看起來不正確。

+0

是的,你是對的! :) –