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
之后加载它。至少有两个包具有这样的支持:Hmisc
和 expss
。不需要其他操作,只需 library(expss)
或 library(Hmisc)
。
我使用 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
之后加载它。至少有两个包具有这样的支持:Hmisc
和 expss
。不需要其他操作,只需 library(expss)
或 library(Hmisc)
。