r - 将 tidyr complete() 与变量中指定的列名一起使用

标签 r tidyr

我在使用 tidyr::complete() 时遇到问题以列名作为变量的函数。
内置示例按预期工作:

df <- data_frame(
 group = c(1:2, 1),
 item_id = c(1:2, 2),
 item_name = c("a", "b", "b"),
 value1 = 1:3,
 value2 = 4:6
)

df %>% complete(group, nesting(item_id, item_name)) 
但是,当我尝试将列名作为字符串提供时,它会产生错误。
gr="group"
id="item_id"
name="item_name"
df %>% complete_(gr, nesting_(id, name),fill = list(NA))

最佳答案

我认为这是一个错误 complete_不能使用 data.frames 或列表列,如 complete可以,但这里有一个使用 unite_ 的解决方法和 separate模拟 nesting :

df %>% unite_('id_name', c(id, name)) %>% 
    complete_(c(gr, 'id_name')) %>% 
    separate(id_name, c(id, name))

## # A tibble: 4 × 5
##   group item_id item_name value1 value2
## * <dbl>   <chr>     <chr>  <int>  <int>
## 1     1       1         a      1      4
## 2     1       2         b      3      6
## 3     2       1         a     NA     NA
## 4     2       2         b      2      5

关于r - 将 tidyr complete() 与变量中指定的列名一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40577484/

相关文章:

在正在运行的 Shiny 应用程序中运行 Shiny 应用程序

r - 一个 block 中的 knit 绘图、标签和标题 - .Rmd 文件

r - 如何引用循环 R 中列的位置

r - dplyr 列联表中的准确比例

r - 整理一个数据框,其中每一列包含多个变量

r - 在 r 中将 2 列(从长形式转换为宽形式)扩展为 4 列

r - 如何在一个循环中拟合多个交互模型?

string - 访问R中str_split分割的各个值,找到最后一个?

r - 为什么在使用 pivot_wider 时会产生 NA 值?

r - 在 gather 函数中使用变量