gpt4 book ai didi

r - 在 group_by 之后连接表

转载 作者:行者123 更新时间:2023-12-01 22:26:09 25 4
gpt4 key购买 nike

我想在 group_by 操作后对两个表执行连接。

A <- data.frame(x1=c("a","b","c","d"))
B <- data.frame(x1=c("a","c","d","c","a"), x2=c(1,1,1,2,2))

想法是 x2 是一个 ID,x1 可能类似于日期,并且可能还有其他列用于温度值。表 A 包含所有日期,B 包含实际观察结果。在没有观察的情况下,我希望得到一个包含所有带 NA 的 ID 的所有日期的表格。folowwing 命令生成:

> dplyr::left_join(A,B,by="x1")
x1 x2
1 a 1
2 a 2
3 b NA
4 c 1
5 c 2
6 d 1

但我想要更像的东西:

x1 x2
a 1
a 2
b NA
b NA
c 1
c 2
d 1
d NA

所以我尝试了这个但没有成功:

B %>% dplyr::group_by(x2) %>% dplyr::left_join(A,.data,by="x1")

如果可能的话,保留 group_by(x2) 对我来说真的很有用

最佳答案

一种方法是添加一个变量来计算 x1 的观察次数,然后使用 tidyr::complete 完成 data.frame。

require(dplyr)

left_join(A, B, by="x1") %>%
# add variable "obs"
group_by(x1) %>%
mutate(obs = seq(n())) %>%
ungroup %>%
# complete the data
tidyr::complete(x1, obs) %>%
select(-obs)

来源:本地数据框 [8 x 2]

##      x1    x2
## (chr) (dbl)
## 1 a 1
## 2 a 2
## 3 b NA
## 4 b NA
## 5 c 1
## 6 c 2
## 7 d 1
## 8 d NA

关于r - 在 group_by 之后连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34131133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com