在数据框的多个列中折叠相似的因子

时间:2016-02-25 05:01:49

标签: r

我是一名R新手,正在努力解决与调查中的Likert项目分析因素有关的一些基本问题。

具体来说,我遇到了两个问题 - 首先,我不确定如何在数据框的各列中更改相似的因子名称,其次,我正在寻找一个在数据框的多个列中同时折叠因子类别的高效且简单的方法。例如,如果第1列到第3列的七分制都是"非常不满意","中度不满意"等等,最高为"非常满意&#34 ;,我如何将类别折叠成" Dissatisfied"并且"满意"同时在所有三列中?

我也希望在使用数据框而不是转换为矩阵或其他数据对象时实现这一目标。也许我对因素的理解需要改进,但我知道因素有潜在的数字。我希望在使用因子名称时找到一种方法来实现结果,而不是指数字。或者我在这里遗漏了一些明显的因素?

我已经玩过汽车套装中的重新编码,但我觉得可能有一种更简单的方法。我还没有能够通过使用apply函数在多个列中使用重新编码。有没有办法将Plyr或Dplyr软件包用于这种类型的多列重新编码?

同样,同时在列间重命名相似因子的最简单方法是什么?例如,重命名"非常满意"到"分机饱和"跨第1至3列。

我是否使用"申请"或者" lapply"连同一个功能?

我搜索并搜索了一个答案,看起来它应该是R中一个相对简单和常见的任务,但是找不到任何有效或足够让我理解的东西。

任何建议都将不胜感激!这也是我的第一个Stack溢出帖子,所以让我知道如何改进我的问题格式,措辞等。

谢谢! 麦克

2 个答案:

答案 0 :(得分:0)

您可以指定jmeter的{​​{1}}来相对轻松地制作群组,同时保留levels结构。 E.g:

factor

答案 1 :(得分:0)

我们可以使用recode中的library(car)(来自@ thelatemail'帖子的示例数据)

library(car)
df[] <-  lapply(df, recode, 
            'c("extr.dis","dis")="dissat";"extr.sat"="sat"')


 df
 #    X1     X2     X3
 #1 dissat dissat dissat
 #2 dissat dissat dissat
 #3    sat    sat    sat
 #4    sat    sat    sat

str(df)
#'data.frame':   4 obs. of  3 variables:
# $ X1: Factor w/ 2 levels "dissat","sat": 1 1 2 2
# $ X2: Factor w/ 2 levels "dissat","sat": 1 1 2 2
# $ X3: Factor w/ 2 levels "dissat","sat": 1 1 2 2