r - 按顺序填充/重新扩展缺失值,而不是插补

标签 r tidyr

我有一个如下所示的数据框:

library(dplyr)
df <- expand.grid(
    id = 1:3, 
    key = 1:10) %>%
    filter(!(id == 1 & key <= 4)) %>%
    filter(!(id == 2 & key %in% c(1:3, 6, 7, 10))) %>%
    filter(!(id == 3 & key %in% c(1, 2, 4, 5, 7:10))) %>%
    arrange(id, key) %>%
    cbind(value = c(10, 11, 15, 17, 20, 30, 1, 6, 8, 100, 0.2, 0.7))
  • id == 1 转到 key == 10
  • id == 2 转到 key == 9
  • id == 3 转到 key == 6

我想为 key 填充/重新扩展整数序列直到键的最大值,值可以是 NA(这不是插补问题)...

所以对于 id == 3 我想要键 1、2、3、4、5、6...值 == NA

提前致谢!

最佳答案

再向你的管道添加一个具有讽刺意味的名称 complete:

library(tidyr)
df <- expand.grid(
  id = 1:3, 
  key = 1:10) %>%
  filter(!(id == 1 & key <= 4)) %>%
  filter(!(id == 2 & key %in% c(1:3, 6, 7, 10))) %>%
  filter(!(id == 3 & key %in% c(1, 2, 4, 5, 7:10))) %>%
  arrange(id, key) %>%
  cbind(value = c(10, 11, 15, 17, 20, 30, 1, 6, 8, 100, 0.2, 0.7)) %>%
  complete(id, key)
#    id key value
# 1   1   3    NA
# 2   1   4    NA
# 3   1   5  10.0
# 4   1   6  11.0
# 5   1   7  15.0
# 6   1   8  17.0
# 7   1   9  20.0
# 8   1  10  30.0
# 9   2   3    NA
# 10  2   4   1.0

编辑

要超越数据使用中的键:

complete(df, id, key = 1:10)

关于r - 按顺序填充/重新扩展缺失值,而不是插补,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38489481/

相关文章:

r - 在列表定义中使用 rlang::sym

r - 解决 R 中函数名称冲突的最佳方法是什么?

r - 使用 ggplot2 和特殊字符

R 使用 tidyr alone 分隔列值,但值位于嵌套列表中

按行平均超过增加号。在 mutate : dplyr R 内使用 for 循环的列数

r - 如何将多个变量的重复测量扩展到宽格式?

r - 将数据帧列表重叠到子集并覆盖 dfs

Power BI 中的 R 脚本将日期返回为 Microsoft.OleDb.Date

r - 在 R 中,我可以让 table() 函数返回命名元素中 NA 值的数量吗?

r - 如何在整个 data.frame 中搜索字符串