R - 在使用 haven 包中的 read_sav 后对数据框进行子集化时丢失标签

R - Loss labels when I subset a data frame after using read_sav from haven package

我使用 haven 包中的 read_sav 函数导入 SPSS 文件。因此我有列名和关联标签(class 标记)。

当我用 subset 对数据框进行子集化时,我丢失了标签。我可以使用索引 data[i] 的解决方法,但这种行为是否是错误?

这是一个简单的例子。

DataForExample <- structure(list(q0001_0001 = structure(c(2, NA, 5, 4, NA), label = "être plus rapide", class = "labelled", labels = structure(c(1, 
2, 3, 4, 5), .Names = c("non, pas du tout", "non, pas vraiment", 
"oui, un peu", "oui, tout à fait", "je ne sais pas"))), q0001_0002 = structure(c(NA, 
3, NA, 4, 2), label = "être plus fiable", class = "labelled", labels = structure(c(1, 
2, 3, 4, 5), .Names = c("non, pas du tout", "non, pas vraiment", 
"oui, un peu", "oui, tout à fait", "je ne sais pas")))), .Names = c("q0001_0001", 
"q0001_0002"), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, 
-5L))

View(DataForExample) # OK
Toto <- subset(DataForExample, select = q0001_0001)
View(Toto) # NOK : the labels disappeared
Toto2 <- DataForExample[1]
View(Toto2) # OK

谢谢

与您之前关于排序的问题的答案相同。您需要加载支持 class labelled 子集操作的包。最好在 haven 之后加载它。至少有两个包具有这样的支持:Hmiscexpss。不需要其他操作,只需 library(expss)library(Hmisc)