gpt4 book ai didi

R:data.frame 中的 ne-name 因子值

转载 作者:行者123 更新时间:2023-12-05 00:22:57 24 4
gpt4 key购买 nike

已编辑

我有一个 data.frame [integer_disc] 由 integer 组成变量(值为 1、2、3)。数据框大约有 120 列和 54,000 行。下面是截图

Col1   Col2   Col3  Col 4 [up to Col 120]
1 2 1 1
3 1 2 1
2 2 2 2
1 3 3 1

( 编辑 :如上面的片段,确实有可能某些列只有三个值中的两个。我用 str 进行了检查。 编辑结束 )

我想将它们重新命名为“低”、“中”和“高”。可能我得把它们变成 factor以前的值(value)观?我会通过
integers_factor <- lapply(integer_disc, function(x) as.factor(x))

然后我阅读了如何在此处完成重命名( change name of specific levels in factor ),但不同之处在于我需要重命名所有列,输出如下:
Col1     Col2       Col3       Col 4 [up to Col 120]
low medium low low
high low medium low
medium medium medium medium
low high high low

我也试过 cut功能,但这似乎也不起作用(无论是 integer 还是 factor 值。
integer_disc_labelled <- cut(integers_factor, breaks=c(1,2,3), labels=c("low","medium","high"))

(可能我还需要另一个数据 class 又来了!?)

可能有一种简单的方法可以使用我不知道的指定函数重命名值?

非常感谢你的每一个想法!

最佳答案

第一 道路:
使用 ifelse声明:

df <- read.table(text = "Col1   Col2   Col3  
1 2 1
3 1 2
2 2 2
1 3 3", header = TRUE, stringsAsFactors = FALSE)

df[] <- lapply(df, function(col) ifelse(col == 1, "low",
ifelse(col == 2, "med", "high")))

> df
Col1 Col2 Col3
1 low med low
2 high low med
3 med med med
4 low high high

第二 道路:
使用 factorlabels争论:
(为演示更改了 Col2 的最后一个值,其中一列不包含所有值):
df <- read.table(text = "Col1   Col2   Col3  
1 2 1
3 1 2
2 2 2
1 2 3",
header = TRUE, stringsAsFactors = FALSE)

> df[] <- lapply(df, factor,
levels = c(1, 2, 3),
labels = c("low", "med", "high"))
> df
Col1 Col2 Col3
1 low med low
2 high low med
3 med med med
4 low med high

> str(df)
'data.frame': 4 obs. of 3 variables:
$ Col1: Factor w/ 3 levels "low","med","high": 1 3 2 1
$ Col2: Factor w/ 3 levels "low","med","high": 2 1 2 2
$ Col3: Factor w/ 3 levels "low","med","high": 1 2 2 3

我根据@agenis 和@Roland 的有用评论编辑了我的示例 - 谢谢!
括号的巧妙技巧确保保留原始对象类和结构 - 我从哈德利的 Subassignment 中学到了它章节。

关于R:data.frame 中的 ne-name 因子值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29007145/

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