我得到了以下两个数据文件(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和data中包含的患者中提取megedDataset中的数据?我试过了,但没有用:
finalData <- mergedData[dats$idpatient == datxt$idpatient,]你能帮我一下吗?
提前感谢!
发布于 2015-10-27 21:13:33
如果使用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这似乎不对。
https://stackoverflow.com/questions/33378356
复制相似问题