R - 在使用来自避免包的read_sav后对数据帧进行子集时的R - Loss标签

时间:2016-11-06 22:34:43

标签: r subset r-haven

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

我使用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

由于

1 个答案:

答案 0 :(得分:2)

与之前关于排序的问题相同的答案。您需要加载包,以支持类haven的子集化操作。最好在Hmisc之后加载它。至少有两个包含此类支持的包:expsslibrary(expss)。无需其他操作,只需library(Hmisc)var timezone = 'America/Los_Angeles'; var supportStartTime = moment().tz(timezone).hours(8).minutes(0).seconds(0); console.log(supportStartTime.format()); var supportEndsTime = moment().tz(timezone).hours(16).minutes(0).seconds(0); console.log(supportEndsTime.format()); var now = moment().tz('EST').startOf('day').hours(10); console.log(now.format()); var isBetweenWorkingHours = now.isBetween(supportStartTime,supportEndsTime); console.log(isBetweenWorkingHours); var now = moment().tz('EST').startOf('day').hours(12); console.log(now.format()); var isBetweenWorkingHours = now.isBetween(supportStartTime,supportEndsTime); console.log(isBetweenWorkingHours); var now = moment(); console.log(now.format()); var isBetweenWorkingHours = now.isBetween(supportStartTime,supportEndsTime); console.log(isBetweenWorkingHours);