gpt4 book ai didi

r - 如何更改 data.table 中因子列的级别

转载 作者:行者123 更新时间:2023-12-03 06:10:32 26 4
gpt4 key购买 nike

更改data.tablefactor列的级别的正确方法是什么(注意:不是数据框)

  library(data.table)
mydt <- data.table(id=1:6, value=as.factor(c("A", "A", "B", "B", "B", "C")), key="id")

mydt[, levels(value)]
[1] "A" "B" "C"

我正在寻找类似的东西:

mydt[, levels(value) <- c("X", "Y", "Z")]

但是,当然,上面的行不起作用。

    # Actual               # Expected result
> mydt > mydt
id value id value
1: 1 A 1: 1 X
2: 2 A 2: 2 X
3: 3 B 3: 3 Y
4: 4 B 4: 4 Y
5: 5 B 5: 5 Y
6: 6 C 6: 6 Z

最佳答案

您仍然可以以传统方式设置它们:

levels(mydt$value) <- c(...)

这应该很快,除非 mydt非常大,因为传统语法会复制整个对象。您还可以玩分解和重构游戏...但无论如何没有人喜欢这个游戏。

通过引用更改级别,无需 mydt 的副本:

setattr(mydt$value,"levels",c(...))

但请务必分配一个有效的级别向量(输入足够长度的 character ),否则最终会得到无效因子( levels<- 进行一些检查和复制)。

关于r - 如何更改 data.table 中因子列的级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14634964/

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