head(airquality) ozone solar.r wind temp -6ren">
gpt4 book ai didi

r - 如何将reshape2包中的melt.data.frame函数返回 "variable"列更改为 "character"类?

转载 作者:行者123 更新时间:2023-12-02 05:53:41 26 4
gpt4 key购买 nike

melt.data.frame 的默认行为是返回“factor”类中的“variable”列。这是一个例子:

> head(airquality)

ozone solar.r wind temp month day
1 41 190 7.4 67 5 1
2 36 118 8.0 72 5 2
3 12 149 12.6 74 5 3
4 18 313 11.5 62 5 4
5 NA NA 14.3 56 5 5
6 28 NA 14.9 66 5 6

> x = melt(head(airquality))
Using as id variables

> head(x)
variable value
1 ozone 41
2 ozone 36
3 ozone 12
4 ozone 18
5 ozone NA
6 ozone 28

> class(x$variable)
[1] "factor"

问题是是否有任何参数可以将类别从因子更改为字符?我尝试了 options(stringsAsFactors = FALSE) 但它不起作用。

最佳答案

我不相信 melt.data.frame 中内置有这样的选项。但是,如果您检查代码,就会发现更改并不难。我们可以定义一个新函数 melt.df 来替换相关行,并快速检查用户是否设置了 stringsAsFactors = FALSE:

if (getOption("stringsAsFactors")){
df[[variable_name]] <- factor(df[[variable_name]],
unique(df[[variable_name]]))
}
else{
df[[variable_name]] <- as.character(factor(df[[variable_name]],
unique(df[[variable_name]])))
}

我在你的简单示例中检查了这一点,它按预期工作,但我还没有更广泛地检查它,所以要小心。我不相信这种修改在其他情况下不会产生令人惊讶的行为。

关于r - 如何将reshape2包中的melt.data.frame函数返回 "variable"列更改为 "character"类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7423116/

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