R标签值函数对标签进行排序或删除未使用的标签不做任何事情.为什么?



我的问题是关于

library(haven)
library(labelled)
library(sjlabelled)

我要做的是在转换因子之前清理一些来自SPSS的标记数据,以便我可以运行有意义的回归。这意味着要摆脱那些没有多大帮助的小的包罗万象的分类。

步骤如下第一步)将NA替换为0,并标记为"缺失";第二步)找到"Other"的值,找到所有的实例并将它们重新编码为零第三步)按值对所有标签进行排序,并删除"其他"标签;如未使用。

tdf2 <- as.data.frame(haven::read_sav(file.choose())
test2 <- tdf2[, 'AgeGender']

这就是我得到可重复性数据的方法

set.seed(123)
test2 <- sample(1:15, size = 3000, replace = TRUE)
add_labels(test2, labels = c("female 18-24" = 1, "female 25-34" =2, etc see below up to 15)
changetoNA <- which(test2 %in% sample(test2, 15))
test2[changetoNA] <- NA
# STEP ONE
test2[is.na(test2)] <- 0
val_label(test2,0) <- "missing"
# STEP TWO
z <- stack(attr(test2,"labels")  # create a df of labels and values
y <- which(z == "Other", arr.ind = TRUE)[1] # look up the row index of the subset of Other
test2[test2 == y] <- 0  # change the values of that row index to zero
attributes(test2)$class  # now take a look at the class
z # and the table z

美元类haven_labeled vctr -vctr double

1名女性18-24岁2女性25-34岁3女性35-444女性45-54岁女性55-64岁6女性65-74岁7女性75岁以上8男性18-24岁9男性25-34岁10男性35-4411男性45-54男性12名,55-64岁男性13名,65-74岁14男75岁以上其他15个

0失踪所以我要做的是对值标签进行排序,这样missing就会在列表的第一个位置占据正确的位置,并删除"other"。

# STEP THREE
drop_unused_value_labels(test2)
sort_val_labels(test2, according_to = "values")

没有

我觉得如此愚蠢!

test2 <- drop_unused_value_labels(test2)
test2 <- sort_val_labels(test2, according_to = "values")

工作好。(叹息)

最新更新