使用prcomp时,列标签为变量名

问题描述 投票:0回答:1

我有一个带有列标签的数据框*。例如,当使用prcomp时,如何使用或显示这些列标签而不是列名? (下面的函数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 

*以下列方式从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之间的所有内容”,但至少可以解决这个问题。但指针很受欢迎。正如你所知,我是的初学者。)

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"
r label spss prcomp
1个回答
0
投票

啊!我可以:

> library(sjlabelled)
> rownames(spss.wvs$rotation) <- get_label(wvs)

哪能给我

> spss.wvs$rotation %>% head(2)
                                 PC1        PC2
Confidence: churches     -0.08513771 0.45688379
Confidence: armed forces -0.23062304 0.05508813
© www.soinside.com 2019 - 2024. All rights reserved.