这个问题是建立在另一个问题的基础上的R 按 ID 将重复行与数据框中不同的列类型组合起来。我有一个带有列的数据表time
以及其他一些不同类型的列(因子和数字)。这是一个例子:
dt <- data.table(time = c(1, 1, 1, 1, 1, 2, 2, 3, 3, 4, 4, 4, 4),
abst = c(0, NA, 2, NA, NA, NA, 0, 0, NA, 2, NA, 3, 4),
farbe = as.factor(c("keine", NA, "keine", NA, NA, NA, "keine", "keine", NA, NA, NA, "rot", "blau")),
gier = c(0, NA, 5, NA, NA, NA, 0, 0, NA, 1, NA, 6, 2),
goff = as.factor(c("haus", "maus", "toll", NA, "haus", NA, "maus", NA, NA, NA, NA, NA, "maus")),
huft = as.factor(c(NA, NA, NA, NA, NA, "wolle", NA, NA, "wolle", NA, NA, "holz", NA)),
mode = c(4, 2, NA, NA, 6, 5, 0, NA, NA, NA, NA, NA, 3))
现在我想合并列中的重复时间time
。数字列定义为所有相同 ID 的平均值(不含 NA!)。因子列合并为一列。 NA 可以省略。
dtRes <- data.table(time = c(1, 1, 1, 2, 3, 4, 4),
abst = c(1, 1, 1, 0, 0, 3, 3),
farbe = as.factor(c("keine", "keine", "keine", "keine", "keine", "rot", "blau")),
gier = c(2.5, 2.5, 2.5, 0, 0, 3, 3),
goff = as.factor(c("haus", "maus", "toll", "maus", NA, "maus", "maus")),
huft = as.factor(c(NA, NA, NA, "wolle", "wolle", "holz", "holz")),
mode = c(4, 4, 4, 2.5, NA, 3, 3))
我需要对此进行一些快速计算,因为我有大约一百万个观察值。
对这个问题的一些额外想法:farbe
可能不是唯一的。在这种情况下,我认为对我的数据来说最好的想法是有一个重复的行,但只有一个不同的行farbe
,因此有 2 个相同的时间,其余时间保持相同,但值不同farbe
。这应该只是非常罕见的情况,但将是一个很好的补充。
另外:我的真实数据中有更多的数字和因子列,所以我不想单独定义每一列。在某些数据表中没有因子列。因此,即使没有数字(time
总是存在并且数字)或因子列。
提前谢谢!