如何在R中对因子水平进行分组?

3

我的数据集中有一个包含Likert量表反应的列,范围从非常可能到不可能。我想绑定一个新的列,将其中几个因素级别进行分组。例如,新的列将只有两个因素级别:一个由“非常可能”和“可能”组成,另一个由“稍微可能”和“不可能”组成。我计划将新列转换为数字并计算一些统计测试。最后,我希望做到这样:

Grouped_Levels <- as.numeric(Grouped_Levels)
mydata <- cbind(mydata, Grouped_Levels) 

Statistical_Testing.aov <- aov(Grouped_Levels ~ Question, data = mydata)

这个回答解决了你的问题吗?如何在R中对因子水平进行分组 - mnm
@mnm 这可能是真的,但这是一个老问题,因此可能会令人困惑,因为失败的方法实际上是有效的。 - jay.sf
@jay.sf 我不明白将给定的 Q 标记为旧或新的意义所在,特别是当先前的 Q 和当前上下文中的 Q 在语法上相同时。此外,你指的是哪个“失败的方法”? - mnm
@mnm,“旧的”是合适的,因为您链接的问题可能已经无法在更新的R版本中再现,可以参考此问题的新答案和我的评论:https://dev59.com/_Znga4cB1Zd3GeqPd9L8#60316880 - jay.sf
@jay.sf,我看到了你在链接问题上刚刚发布的评论。那么,我是否不应该将其视为强制辩解来补充你在这里的答案,并否认接受这个问题确实是重复的呢?我的观点是,你在链接问题上的评论是2小时前发布的。我认为它是你在这个问题中回答的混合物。 - mnm
1个回答

1

通过将分组指定在列表中,可以轻松地对分组因素级别进行分组。以下是一个使用玩具数据的示例:

levels(mydata$value)
# [1] "not likely"      "slightly likely" "likely"          "very likely"    

levels(mydata$value) <- list("unlikely"=c("not likely", "slightly likely"),
                           "likely"=c("likely", "very likely"))
levels(mydata$value)
# [1] "unlikely" "likely"  

之后,您可能想要这样做:

(Statistical_Testing.aov <- aov(as.integer(value) ~ question, data = mydata))
# Call:
#   aov(formula = as.integer(value) ~ question, data = mydata)
# 
# Terms:
#   question Residuals
# Sum of Squares      0.18      5.82
# Deg. of Freedom        1        23
# 
# Residual standard error: 0.5030343
# Estimated effects may be unbalanced

(Statistical_Testing.anova <- anova(Statistical_Testing.aov))
# Analysis of Variance Table
# 
# Response: as.integer(value)
#           Df Sum Sq Mean Sq F value Pr(>F)
# question   1   0.18 0.18000  0.7113 0.4077
# Residuals 23   5.82 0.25304

玩具数据:

set.seed(42)
mydata <- transform(expand.grid(question=1:5, id=1:5),
                    value=factor(sample(1:4, 25, rep=T), 
                                 labels=c("not likely", "slightly likely", 
                                          "likely", "very likely")))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接