在因子

时间:2015-12-30 18:34:53

标签: r

我有一个数据框,其中有几个有序因子向量,可以取值1-4。 v2没有任何有价值的实例3.这是一个基本的例子:

myData <- data.frame(v1=factor(c(1, 1, 2, 2, 3, 3, 4, 4),
                               levels=c(1, 2, 3, 4),
                               ordered=TRUE),
                     v2=factor(c(1, 1, 2, 2, 4, 4, 4, 4),
                               levels=c(1, 2, 3, 4),
                               ordered=TRUE))
myData
#   v1 v2
# 1  1  1
# 2  1  1
# 3  2  2
# 4  2  2
# 5  3  4
# 6  3  4
# 7  4  4
# 8  4  4

levels(myData$v2)
# [1] "1" "2" "3" "4"

我需要估算丢失的数据,因此我在所有列中删除了未使用的级别(例如,v2中的级别3):

myData <- droplevels(myData)
levels(myData$v2)
# [1] "1" "2" "4"

现在我想创建一些Likert图,但数据框中的所有列都需要具有相同数量的响应选项(即,相同数量的级别)。

我已经在名为L的对象中以编程方式定义了数据框中找到的最大级别。所以在这种情况下,结果是一个对象L

L <- c(1, 2, 3, 4)

我需要确保数据框中的每一列都有级别L。对于v2,这意味着有0级观察值为3级。我只有两列,所以我需要在所有列上运行解决方案。

我试过的应用风格方法刚刚产生了NAs。

1 个答案:

答案 0 :(得分:0)

通过@DavidArenburg:

myData[] <- lapply(myData, factor, levels = L)