我有一个数据框,其中有几个有序因子向量,可以取值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。
答案 0 :(得分:0)
通过@DavidArenburg:
myData[] <- lapply(myData, factor, levels = L)