我已将 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)}))
相反,所有关卡数据都会转换为字符串。我该如何正确地做到这一点?
使用时data.frame
,R 将再次转换为正常因子(或者如果stringsAsFactors = FALSE
串)。使用as.data.frame
反而。一个带有玩具数据框的简单示例:
X <- data.frame(
var1=rep(letters[1:5],3),
var2=rep(letters[1:5],each=3)
)
likerts <- as.data.frame(lapply(X, function(X){ordered(X,
levels = letters[5:1],labels=letters[5:1])}))
> str(likerts)
'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 ...
顺便说一句,ordered()
给你一个有序因子,并且lapply(X,...)
比更优化apply(X,2,...)
对于数据帧。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)