基于单个列变量合并两个数据集行
Merging two datasets rows based on a single column variable
我在 R 中有两个包含相同类型数据(相同变量)的数据框。对于这个例子,我将它们命名为 blank
和 data
。
>blank
Prey Sample Value
1 act1 IP 0
2 act1 Mock 0
3 act2 IP 0
4 act2 Mock 0
5 act3 IP 0
>data
Prey Sample Value
1 act1 IP 2.2
2 act1 Mock 0
3 act3 IP 3.6
4 act3 IP 3.1
5 act3 IP 2.1
我想将两个数据帧合二为一。我想保留 data
中的所有行,同时根据 Prey
列添加 data
中缺少的 blank
中的所有行。明确地说,我不需要 union
,因为我不想考虑 整个 行内容,而只考虑 Prey
列的内容合并两个数据集。
下面是这个小示例的预期结果,其中添加了来自 blank
的 act2
行,而来自 data
的行保持不变。
>result
Prey Sample Value
1 act1 IP 2.2
2 act1 Mock 0
3 act3 IP 3.6
4 act3 IP 3.1
5 act3 IP 2.1
6 act2 IP 0
4 act2 Mock 0
我四处寻找了一个简单的解决方案,但我仍然卡住了。感谢任何建议。
rbind(
data,
blank[!blank$Prey %in% data$Prey,]
)
这是使用 anti_join
和 bind_rows
的 dyplr
解决方案
library(dplyr)
library(tibble)
blank %>%
anti_join(data, by="Prey") %>%
bind_rows(data, .) %>%
as_tibble()
Prey Sample Value
<chr> <chr> <dbl>
1 act1 IP 2.2
2 act1 Mock 0
3 act3 IP 3.6
4 act3 IP 3.1
5 act3 IP 2.1
6 act2 IP 0
7 act2 Mock 0
我在 R 中有两个包含相同类型数据(相同变量)的数据框。对于这个例子,我将它们命名为 blank
和 data
。
>blank
Prey Sample Value
1 act1 IP 0
2 act1 Mock 0
3 act2 IP 0
4 act2 Mock 0
5 act3 IP 0
>data
Prey Sample Value
1 act1 IP 2.2
2 act1 Mock 0
3 act3 IP 3.6
4 act3 IP 3.1
5 act3 IP 2.1
我想将两个数据帧合二为一。我想保留 data
中的所有行,同时根据 Prey
列添加 data
中缺少的 blank
中的所有行。明确地说,我不需要 union
,因为我不想考虑 整个 行内容,而只考虑 Prey
列的内容合并两个数据集。
下面是这个小示例的预期结果,其中添加了来自 blank
的 act2
行,而来自 data
的行保持不变。
>result
Prey Sample Value
1 act1 IP 2.2
2 act1 Mock 0
3 act3 IP 3.6
4 act3 IP 3.1
5 act3 IP 2.1
6 act2 IP 0
4 act2 Mock 0
我四处寻找了一个简单的解决方案,但我仍然卡住了。感谢任何建议。
rbind(
data,
blank[!blank$Prey %in% data$Prey,]
)
这是使用 anti_join
和 bind_rows
dyplr
解决方案
library(dplyr)
library(tibble)
blank %>%
anti_join(data, by="Prey") %>%
bind_rows(data, .) %>%
as_tibble()
Prey Sample Value
<chr> <chr> <dbl>
1 act1 IP 2.2
2 act1 Mock 0
3 act3 IP 3.6
4 act3 IP 3.1
5 act3 IP 2.1
6 act2 IP 0
7 act2 Mock 0