任何使用data.table或dplyr解决以下问题的方法?从三列data.table返回所有因子级别的名称作为新列[R]
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',因为我们始终使用该函数。 – Frank
好点。无论如何,您的解决方案效率高。 –
如果你最终希望得到一个'a'的单个行,可以使用[tidyr]中的'spread(DT,c,b)'(http://cran.r-project.org/web/packages/ tidyr/vignettes/tidy-data.html)包。 –