gpt4 book ai didi

r - 为数据框中的多列设置因子水平的顺序

转载 作者:行者123 更新时间:2023-12-04 22:25:02 25 4
gpt4 key购买 nike

我已将 CSV 文件中的数据加载到数据框中。每列代表一个调查问题,所有答案均采用李克特五点量表,并带有标签:(“无”、“低”、“中”、“高”、“非常高”)。

当我最初读入数据时,R 正确地将这些值解释为因子,但不知道顺序应该是什么。我想指定值的排序方式,以便我可以进行一些数值计算。我认为以下代码会起作用:

X <- read.csv('..')
likerts <- data.frame(apply(X, 2, function(X){factor(X,
levels = c("None", "Low", "Medium", "High", "Very High"),
ordered = T)}))

相反,所有关卡数据都被转换为字符串。我该如何正确地做到这一点?

最佳答案

以及强制性的 plyr 解决方案(使用上面的 Joris 示例):

> require(plyr)
> Y <- catcolwise( function(v) ordered(v, levels = letters[5:1]))(X)

> str(Y)
'data.frame': 15 obs. of 2 variables:
$ var1: Ord.factor w/ 5 levels "e"<"d"<"c"<"b"<..: 5 4 3 2 1 5 4 3 2 1 ...
$ var2: Ord.factor w/ 5 levels "e"<"d"<"c"<"b"<..: 5 5 5 4 4 4 3 3 3 2 ...

请注意, catcolwise 的一个好处是它只会将它应用于作为因子的 X 列,而其他人则单独存在。解释发生了什么: catcolwise 是一个函数,它将函数作为参数,并返回一个函数,该函数在数据帧的因子列上“按列”操作。所以我们可以想象上面的代码分为两个阶段: fn <- catcolwise(...); Y <- fn(X) 。请注意,还有函数 colwise(对所有列进行操作)和 numcolwise(仅对数字列进行操作)。

关于r - 为数据框中的多列设置因子水平的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4877065/

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