首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从其他2个数据中用colum值过滤数据

从其他2个数据中用colum值过滤数据
EN

Stack Overflow用户
提问于 2015-10-27 20:58:27
回答 1查看 43关注 0票数 0

我得到了以下两个数据文件(dats、datxt):

代码语言:javascript
复制
> 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):

代码语言:javascript
复制
> 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中的数据?我试过了,但没有用:

代码语言:javascript
复制
finalData <- mergedData[dats$idpatient == datxt$idpatient,]

你能帮我一下吗?

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-27 21:13:33

如果使用merge()合并数据集,则根据参数的不同,新数据集仅包含两个数据集中的对象(由唯一id确定)。

代码语言:javascript
复制
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

这是最接近你的方法:

代码语言:javascript
复制
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

你尝试的回报:

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33378356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档