gpt4 book ai didi

r - 我如何在 R 中合并两个数据帧但保留所有缺失值。

转载 作者:行者123 更新时间:2023-12-05 08:23:52 24 4
gpt4 key购买 nike

我需要合并到具有不同长度的数据帧,并保留所有“缺失值”。问题是实际上并没有缺失值,而只是一个值比另一个值少。

例子:df1 看起来像这样:

Shrub value period
1 0.5 1
2 0.6 1
3 0.7 1
4 0.8 1
5 0.9 1
10 0.9 1
1 0.4 2
5 0.4 2
6 0.5 2
7 0.3 2
2 0.4 3
3 0.1 3
8 0.5 3
9 0.2 3

df2 看起来像这样:

Shrub   x    y
1 5 8
2 6 7
3 3 2
4 1 2
5 4 6
6 5 9
7 9 4
8 2 1
9 4 3
10 3 6

我希望合并后的数据框看起来像:

Shrub   x    y    value   period
1 5 8 0.5 1
2 6 7 0.6 1
3 3 2 0.7 1
4 1 2 0.8 1
5 4 6 0.9 1
6 5 9 NA 1
7 9 4 NA 1
8 2 1 NA 1
9 4 3 NA 1
10 3 6 0.9 1
1 5 8 0.4 2
2 6 7 NA 2
3 3 2 NA 2
4 1 2 NA 2
5 4 6 0.4 2
6 5 9 0.5 2
7 9 4 0.3 2
8 2 1 NA 2
9 4 3 NA 2
10 3 6 NA 2
1 5 8 NA 3
2 6 7 0.4 3
3 3 2 0.1 3
4 1 2 NA 3
5 4 6 NA 3
6 5 9 NA 3
7 9 4 NA 3
8 2 1 0.5 3
9 4 3 0.2 3
10 3 6 NA 3

我已经尝试使用 all = TRUE 合并命令,但这并没有给我想要的结果。我无法在任何地方找到它,因此非常感谢您的帮助!

最佳答案

在这种情况下,tidyr 包中的 complete 很有用(这在 tidyr_0.3.0 中,目前在 github 上可用)。您可以使用此函数扩展 df1 以包括所有期间/灌木组合,默认情况下用 NA 填充其他变量。执行此操作后,您可以简单地将两个数据集连接在一起 - 我将使用 dplyrinner_join

图书馆(dplyr)图书馆(整理)

首先,在 df1 上使用 complete,显示前 10 行输出:

complete(df1, period, Shrub)

Source: local data frame [30 x 3]

period Shrub value
1 1 1 0.5
2 1 2 0.6
3 1 3 0.7
4 1 4 0.8
5 1 5 0.9
6 1 6 NA
7 1 7 NA
8 1 8 NA
9 1 9 NA
10 1 10 0.9
.. ... ... ...

然后您需要做的就是使用 df2 加入这个扩展数据集:

complete(df1, period, Shrub) %>%
inner_join(., df2)
Source: local data frame [30 x 5]

period Shrub value x y
1 1 1 0.5 5 8
2 1 2 0.6 6 7
3 1 3 0.7 3 2
4 1 4 0.8 1 2
5 1 5 0.9 4 6
6 1 6 NA 5 9
7 1 7 NA 9 4
8 1 8 NA 2 1
9 1 9 NA 4 3
10 1 10 0.9 3 6
.. ... ... ... . .

关于r - 我如何在 R 中合并两个数据帧但保留所有缺失值。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32279367/

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