我目前正在研究R.中的纵向数据库,因此,我有很多缺失的值,因为自从上次访问以来变量的值没有添加到新的数据库中。例如,在第一波中,性被定义为男孩或女孩,它不会在第一波和第二波之间发生变化,因此他们不会在第二波中再次发生性行为。
基本上,我想要做的是合并我为第二波选择的数据,并将它与来自第一波的数据合并,以消除一些NAs。然而,我只想保留我从第二波中选择的栏目。目前,在上网后,我只能合并这两个数据集,但我不能只保存第二波的数据。
这是我的代码:
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")合并后我想得到的是:
z = data.frame(
ID = c(1,2,3,4),
S1 = c(1, 3, 5,0),
S2 = c(2, 0, 2,2)
)你知道我如何解决我的问题吗?合并所有内容并再次选择我想要的变量是非常耗时的。
非常感谢并致以最良好的问候!
发布于 2022-03-18 18:24:52
我们可以结合使用inner_join和coalesce。
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) ID S1 S2
1 1 1 2
2 2 3 0
3 3 5 2
4 4 0 2https://stackoverflow.com/questions/71531500
复制相似问题