【问题标题】:R labelled values functions to sort labels or drop unused labels do nothing. Why?R 标记值函数对标签进行排序或删除未使用的标签什么都不做。为什么?
【发布时间】:2022-07-05 07:15:32
【问题描述】:

我的问题涉及到

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

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

步骤如下 第一步)用 0 替换 NA 并将其标记为“缺失” 第二步)找到“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

$类 Have_labelled vctrs-vctr double

1 名 18-24 岁女性 2 名 25-34 岁女性 3 女性 35-44 4 女 45-54 5 位女性 55-64 6 位女性 65-74 7 位女性 75+ 8 男 18-24 9 男 25-34 10 男 35-44 11 男 45-54 12 男 55-64 13 男 65-74 14 男 75+ 15 其他 0 缺失

所以我想做的是对值标签进行排序,以便缺失在列表中占据其应有的位置,并完全删除“其他”。

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

什么都不做

【问题讨论】:

    标签: r labelled


    【解决方案1】:

    我觉得自己太笨了!

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

    工作正常。

    (叹气)

    【讨论】:

      猜你喜欢
      • 2012-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-29
      • 2010-09-05
      • 1970-01-01
      • 2018-05-24
      • 2013-12-09
      相关资源
      最近更新 更多