【问题标题】:R impute last carried forward by group and by conditionR impute last 按组和按条件结转
【发布时间】:2020-11-02 22:00:53
【问题描述】:

我试图通过两组(ID 和一个循环分类变量“current.group”)来估算数值变量“x.val”的 LOCF,但我想让这些组在它们被行分隔的地方不同不同的群体)

data.frame(ID = c("1001", "1001", "1001", "1001", "1001", "1001", "1001", "1002", "1002", "1002", "1002", "1002", "1002", "1002"), 
current.group = c("a", "a", "b", "a", "b", "b", "c", "a", "a", "a", "a", "a", "a", "c"), 
x.val = c(433, NA, NA, 362, NA, NA, 125, 158, NA, NA, NA, 111, NA, 101))

我想要实现的是仅对当前组进行插补,主题 1001 的第 4 个位置与第 1 行和第 2 行的分组“a”相同,但是一个新的循环,所以我希望将其分开为与第 1 行和第 2 行不同的组。结果应该是:

1001, 1001, 1001, 1001, 1001, 1001, 1001, 1002, 1002, 1002, 1002, 1002, 1002, 1002
a, a, b, a, b, b, c, a, a, a, a, a, a, c
433, 433, NA, 362, NA, NA, 125, 158, 158, 158, 158, 111, 111, 101

但是,如果我使用 group_by 函数,它将只获取整个数据帧中“current.group”的所有实例(按 ID 分组)。我倾向于认为有一种方法可以创建一个派生变量,该变量在这个新变量上指示这些不同的组和 group_by。但是,我想知道 dplyr 中是否有不同的方法或使用其他方法

这很难解释我的意思,所以我希望重点是我想要一个 group_by 但区分由不同组的行分隔的实例

【问题讨论】:

    标签: r group-by dplyr imputation locf


    【解决方案1】:

    您可以从循环分组中创建非循环组。只是在 group_by 这个新分组之后。

    df$non.cyclic.groups <- cumsum(c(0,diff(as.numeric(factor(df$current.group))))!=0)
    
         ID current.group x.val non.cyclic.groups
    1  1001             a   433                 0
    2  1001             a    NA                 0
    3  1001             b    NA                 1
    4  1001             a   362                 2
    5  1001             b    NA                 3
    6  1001             b    NA                 3
    7  1001             c   125                 4
    8  1002             a   158                 5
    9  1002             a    NA                 5
    10 1002             a    NA                 5
    11 1002             a    NA                 5
    12 1002             a   111                 5
    13 1002             a    NA                 5
    14 1002             c   101                 6
    

    【讨论】:

      猜你喜欢
      • 2021-10-30
      • 2023-04-11
      • 2018-12-10
      • 1970-01-01
      • 2013-08-09
      • 2022-12-06
      • 2020-04-04
      • 1970-01-01
      • 2014-03-24
      相关资源
      最近更新 更多