【发布时间】:2019-02-12 14:41:18
【问题描述】:
我有一个带有列标签的数据框*。例如,当使用prcomp 时,如何使用或显示这些列labels 而不是列names? (下面的函数get_label,来自包sjlabelled。)
> get_label(spss.wvs) %>% head(2)
wvs_e069_01 wvs_e069_02
"Confidence: churches" "Confidence: armed forces"
我(通过prcomp)得到的是:
> pca.wvs$rotation %>% head(2)
PC1 PC2
wvs_e069_01 -0.08513771 0.45688379
wvs_e069_02 -0.23062304 0.05508813
我想要的是:
> pca.wvs$rotation %>% head(2)
PC1 PC2
"Confidence: churches" -0.08513771 0.45688379
"Confidence: armed forces" -0.23062304 0.05508813
* 数据集从spss (dropbox link to .sav) 通过包haven 以下列方式导入:
library(haven)
haven.imp <- read_spss("qog_std.sav")
library(dplyr)
spss.wvs <- haven.imp %>% dplyr:: select(starts_with("wvs_e069_0"), starts_with("wvs_e069_1"), grep("wvs_e069_20", names(haven.imp)))
(我确信有更有效的方法可以获取“wvs_e0690_00 和 wvs_e0690_20 之间的所有内容”,但至少这可以解决问题。不过,我们很感激指针。如您所知,我是 r 的初学者。 )
str(spss.wvs[1]) 的输出是:
Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 193 obs. of 1 variable:
$ wvs_e069_01: num NA NA NA 3.17 NA ...
..- attr(*, "label")= chr "Confidence: churches"
..- attr(*, "format.spss")= chr "F8.2"
【问题讨论】:
-
函数
label从何而来?您可以发布示例数据吗?请使用dput(spss.wvs)的输出编辑问题。或者,如果dput(head(spss.wvs, 20))的输出太大。 -
@RuiBarradas 感谢您抽出宝贵时间发表评论!发布到数据集的链接。也从 (Hmisc) 函数
label更改为 (sjlabelled)get_label。我会添加dput(head...)的输出,但我不确定它是否会添加任何内容,例如,标签不会显示在该输出中? -
添加了
str(...)的输出而不是dput(...);似乎它可能更有帮助,因为它包含属性标签,这是我想使用的,可以这么说。
标签: spss r r label spss prcomp