将缺失行的显式表示添加到数据框?

Add in explicit representation of missing rows to data frame?

假设我有一个数据框

df <- tibble(name = c("Mark", "Frank"),
             value1 = c(3,7),
             value2 = c(8,2))

  name  value1 value2
  <chr>  <dbl>  <dbl>
1 Mark       3      8
2 Frank      7      2

但是,我知道缺少名字。有没有办法用 NA?

填充缺失名称的行

我想提供一个向量,例如

name_list <- c("Mark", "Frank", "Joe", "Bob", "Sam")

得到数据框如

  name  value1 value2
  <chr>  <dbl>  <dbl>
1 Mark       3      8
2 Frank      7      2
3 Joe       NA     NA
4 Bob       NA     NA
5 Sam       NA     NA

我尝试使用 tidyr::complete() 但它似乎不能用于此目的?

也许你应该试试 full_join

dplyr::full_join(df, data.frame(name = name_list))

这给出了

# A tibble: 5 x 3
  name  value1 value2
  <chr>  <dbl>  <dbl>
1 Mark       3      8
2 Frank      7      2
3 Joe       NA     NA
4 Bob       NA     NA
5 Sam       NA     NA

或者这可能遵循 @ThomasIsCoding 的明智解决方案:

library(tidyverse)
#Code
newdf <- name_list %>% data.frame() %>% setNames(.,'name') %>%
  left_join(df)

输出:

   name value1 value2
1  Mark      3      8
2 Frank      7      2
3   Joe     NA     NA
4   Bob     NA     NA
5   Sam     NA     NA

或使用complete():

#Code2
newdf <- df %>% complete(data.frame(name=name_list))

输出:

# A tibble: 5 x 3
  name  value1 value2
  <chr>  <dbl>  <dbl>
1 Bob       NA     NA
2 Frank      7      2
3 Joe       NA     NA
4 Mark       3      8
5 Sam       NA     NA

使用 base R

中的 merge
merge(df, data.frame(name = name_list), all = TRUE)