【发布时间】:2018-07-05 11:08:46
【问题描述】:
有没有办法在 R 中加入和更新列?示例:
tbl1 <- tibble(ID = LETTERS[1:3],
VAL = rep(NA, 3),
tbl1_df = list(tibble(A = rnorm(3),
B = rnorm(3))))
tbl2 <- tibble(ID = LETTERS[1:3],
VAL = c(1, 2, 3),
tbl2_df = list(tibble(A = rnorm(3),
B = rnorm(3))))
tbl3 <- tibble(ID = LETTERS[1:3],
VAL = c(1, 2, 3),
tbl3_df = list(tibble(A = rnorm(3),
B = rnorm(3))))
我想将这些 tibbles 连接在一起并使用具有值的表之一更新 VAL。表在 VAL 中始终具有相同的值,但我并不总是知道它们在哪个表中。是否可以强制 VAL 列在一起或将 VAL 列从存在值的小标题之一中保留?
答案应该是这样的,如前所述,VAL 列来自哪个表无关紧要,表具有相同的 VAL 或 NA。
tibble(ID = LETTERS[1:3],
VAL = c(1, 2, 3),
tbl1_df = list(tibble(A = rnorm(3),
B = rnorm(3))),
tbl2_df = list(tibble(A = rnorm(3),
B = rnorm(3))),
tbl3_df = list(tibble(A = rnorm(3),
B = rnorm(3))))
# A tibble: 3 x 5
ID VAL tbl1_df tbl2_df tbl3_df
<chr> <dbl> <list> <list> <list>
1 A 1. <tibble [3 x 2]> <tibble [3 x 2]> <tibble [3 x 2]>
2 B 2. <tibble [3 x 2]> <tibble [3 x 2]> <tibble [3 x 2]>
3 C 3. <tibble [3 x 2]> <tibble [3 x 2]> <tibble [3 x 2]>
【问题讨论】:
-
reduce(list(tbl1, tbl2, tbl3), full_join, by = "ID") %>% select(ID, VAL, tbl1_df, tbl2_df, tbl3_df) -
我喜欢这个,但选择 VAL 恰好在示例中起作用。如前所述,我不知道哪些表填充了 VAL 列。也许我必须从那里争吵,如果没有别的。因为完全连接返回 VAL.x、VAL.y 和 VAL。
标签: r join conditional tibble