【发布时间】:2021-05-03 08:20:44
【问题描述】:
是否可以仅在缺少特定值的情况下绑定行?
在此示例中,我有一个包含四个 ID 和一些值的表。假设每个 ID 都有一个对应的值 1-3。如您所见,表dat 中缺少其中一些值。为了解决这个问题,我想将dat 与dat2 绑定,但仅限于表dat 中缺少列“值”的值。我怎样才能做到这一点?
说清楚,我总共只想要 12 行。例如,ID 4 的值为 3,而表 dat 中的 cat_var “green”。相比之下,在表 dat2 中,ID 4 的值为 3 并且 cat_var “red”。这意味着我不想绑定该行,因为表 dat 中已经存在 ID 4 和值 3 的行。我希望我能说清楚。
library(tidyverse)
数据:
id <- c(rep(1:4,3))
value <- c(rep(1:3, each = 4))
dat <- data.frame(id, value)
dat2 <- dat
dat <- dat %>%
slice(1, 3, 5, 6, 7, 8, 10, 12)
dat2$cat_var <- c(rep("orange", 5), rep("green", 5), rep("red", 2))
dat$cat_var <- c(rep("orange", 3), rep("green", 5))
想要的结果:
# A tibble: 12 x 3
id value cat_var
<int> <int> <chr>
1 1 1 orange
2 2 1 orange
3 3 1 orange
4 4 1 orange
5 1 2 orange
6 2 2 green
7 3 2 green
8 4 2 green
9 1 3 green
10 2 3 green
11 3 3 red
12 4 3 green
【问题讨论】:
-
我不太了解绑定行中的 12 个案例您想要的结果。看起来您将 4 3 red 替换为 4 3 green。但是,如果您真的想要绑定行(导致 13x3 表),那么简单的 dat2 %>% bind_rows(dat) %>% distinct( 就可以了吗?
-
我已经编辑了这个问题,希望这次更容易理解。很抱歉造成混乱。