我有这两个数据帧( dats 和 datxt ):
> 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
如何从dats和datxt中包含的患者中提取megedDataset中的数据?我试过这个但是没有用:
finalData <- mergedData[dats$idpatient == datxt$idpatient,]
你能帮帮我吗?
提前致谢!
答案 0 :(得分: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
这似乎不对。