首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >合并R中的不同数据帧以消除NAs

合并R中的不同数据帧以消除NAs
EN

Stack Overflow用户
提问于 2022-03-18 18:16:20
回答 1查看 54关注 0票数 2

我目前正在研究R.中的纵向数据库,因此,我有很多缺失的值,因为自从上次访问以来变量的值没有添加到新的数据库中。例如,在第一波中,性被定义为男孩或女孩,它不会在第一波和第二波之间发生变化,因此他们不会在第二波中再次发生性行为。

基本上,我想要做的是合并我为第二波选择的数据,并将它与来自第一波的数据合并,以消除一些NAs。然而,我只想保留我从第二波中选择的栏目。目前,在上网后,我只能合并这两个数据集,但我不能只保存第二波的数据。

这是我的代码:

代码语言:javascript
复制
library("rqdatatable")

x <- data.frame(
ID = c(1,2,3,4),
S1 = c(1, 3, NA,0),
S2 = c(2, NA, 2,2)
)


y <- data.frame(
ID = c(1, 2, 3, 4,5,6,7,8),
S1 = c(1, 2, 5, 1,3,6,8,2),
S3 = c(3, 3, 3, 3,7,1,6,9),
S2 = c(0,0,0,0,0,0,0,0),
S4 = c(0,0,0,0,0,0,0,0)
)

final <- natural_join(x, y, 
                   by = "ID",
                   jointype = "LEFT")

合并后我想得到的是:

代码语言:javascript
复制
    z = data.frame(
  ID = c(1,2,3,4),
  S1 = c(1, 3, 5,0),
  S2 = c(2, 0, 2,2)
)

你知道我如何解决我的问题吗?合并所有内容并再次选择我想要的变量是非常耗时的。

非常感谢并致以最良好的问候!

EN

回答 1

Stack Overflow用户

发布于 2022-03-18 18:24:52

我们可以结合使用inner_joincoalesce

代码语言:javascript
复制
library(dplyr)

x %>% 
  inner_join(y, by="ID") %>% 
  mutate(S1 = coalesce(S1.x, S1.y),
         S2 = coalesce(S2.x, S2.y)) %>% 
  select(ID, S1, S2)
代码语言:javascript
复制
  ID S1 S2
1  1  1  2
2  2  3  0
3  3  5  2
4  4  0  2
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71531500

复制
相关文章

相似问题

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