【发布时间】:2015-07-15 20:40:53
【问题描述】:
有什么方法可以使用 data.table 或 dplyr 来解决以下问题?
library(data.table)
(DT = data.table(a = LETTERS[c(1, 1:3, 8)], b = c(2, 4:7),
c = as.factor(c("bob", "mary", "bob", "george", "alice")), key="a"))
返回:
# a b c
# 1: A 2 bob
# 2: A 4 mary
# 3: B 5 bob
# 4: C 6 george
# 5: H 7 alice
想要得到这个:
# alice bob george mary
# 1: A NA 2 NA NA
# 2: A NA NA NA 4
# 3: B NA 5 NA NA
# 4: C NA NA 6 NA
# 5: H 7 NA NA NA
【问题讨论】:
-
命名任何东西
c可能不是一个好习惯,因为我们一直都在使用这个函数。 -
好点。无论如何,您的解决方案都能高效运行!
-
如果您最终希望
a的每个值都有一行,请使用tidyr 包中的spread(DT, c, b)。 -
dcast(DT[, I := .I], a + I ~ c, value.var="b")
标签: r data.table dplyr