将一列的n个值转换为n行

问题描述 投票:0回答:1
data.table(A=c("a","a","b","b","c","c"),
           B=c(3,2,4,7,12,13))->dt

所需输出:

A V1 V2
a 3  2
b 4  7
c 12 13

我想在将 B 列转换为行值时保留它们的顺序。任何帮助将不胜感激。

Dcast 命令没有任何帮助。我进一步尝试了这个:

as.data.frame(matrix(dt$B[dt$B!=""], ncol=2, byrow=TRUE)) -> d1

虽然它确实达到了目的,但我不确定是否将其用于大数据集,因为它可能会打乱 B 列和 A 列的顺序。

r datatable
1个回答
0
投票

我能够通过

dcast()
获得所需的输出:

dcast(dt, A ~ paste0("VAR", rowid(A)) , value.var = "B")
#> Key: <A>
#>         A  VAR1  VAR2
#>    <char> <num> <num>
#> 1:      a     3     2
#> 2:      b     4     7
#> 3:      c    12    13
© www.soinside.com 2019 - 2024. All rights reserved.