gpt4 book ai didi

r - data.table 中的 `unstack()` 相当于什么?

转载 作者:行者123 更新时间:2023-12-05 01:49:01 27 4
gpt4 key购买 nike

我想使用 data.table 将我的数据的长格式转换为宽格式。通常我使用unstack(),但我不知道如何在data.table中使用它。下面是一个例子。作为输出,我期望三列和三行。

library(data.table)
set.seed(1)
df <- data.frame(class = factor(rep(c("A", "B", "C"), times = 3)),
value = runif(9))
unstack(df, form = value ~ class)
#> A B C
#> 1 0.2655087 0.3721239 0.5728534
#> 2 0.9082078 0.2016819 0.8983897
#> 3 0.9446753 0.6607978 0.6291140

dt <- data.table(df)
dcast(dt, formula = value ~ class, value.var = "value")
#> value A B C
#> 1: 0.2016819 NA 0.2016819 NA
#> 2: 0.2655087 0.2655087 NA NA
#> 3: 0.3721239 NA 0.3721239 NA
#> 4: 0.5728534 NA NA 0.5728534
#> 5: 0.6291140 NA NA 0.6291140
#> 6: 0.6607978 NA 0.6607978 NA
#> 7: 0.8983897 NA NA 0.8983897
#> 8: 0.9082078 0.9082078 NA NA
#> 9: 0.9446753 0.9446753 NA NA

此外,我不想使用聚合函数,但在真实数据的 data.table 中我看到:Aggregate function missing, defaulting to 'length',所以行数较少结果。

最佳答案

我想这就是你想要的:

dcast(dt, rowid(class) ~ class)
# class A B C
#1: 1 0.2655087 0.3721239 0.5728534
#2: 2 0.9082078 0.2016819 0.8983897
#3: 3 0.9446753 0.6607978 0.6291140

https://stackoverflow.com/a/52501268/10276092

关于r - data.table 中的 `unstack()` 相当于什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74540592/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com