我必须读取 sav 文件\n我使用该包haven
library(haven)\ndataset<- read_sav("datafile.sav")\nRun Code Online (Sandbox Code Playgroud)\n在控制台中我可以看到标签:
\n\n dput(head(voyages$portdep))\n structure(c(50422, 50299, 50299, 50299, NA, NA), label = "Port of departure", labels = c(Alicante = 10101, \n Barcelona = 10102, Bilbao = 10103, Cadiz = 10104, Figuera = 10105, \n Gibraltar = 10106, `La Coru\xc3\xb1a` = 10107, Santander = 10110, Seville = 10111, \n `San Lucar` = 10112, Vigo = 10113, `Spain, port unspecified` = 10199, \n Lagos = 10202, Lisbon = 10203, Oporto = 10204, `Ilho do Fayal` = 10205, \n Setubal = 10206, `Portugal, port unspecified` = 10299, `Great Britain, port unspecified` = 10399, \n Barmouth = 10401, Bideford = 10402, Birkenhead = 10403, Bristol = 10404, \n Brixham = 10405, Broadstairs = 10406, Cawsand = 10407, Chepstow = 10408, \n Chester = 10409, Colchester = 10410, Cowes = 10411, Dartmouth = 10412, \n Deptford = 10413, Dover = 10414, Exeter = 10415, Folkstone = 10416, \n Frodsham = 10417, Gainsborough = 10418, Greenwich = 10419, Guernsey = 10420, \n Harwich = 10421, Hull = 10422, Ilfracombe = 10423, Ipswich = 10424, \n `Isle of Man` = 10425, `Isle of Wight` = 10426, Jersey = 10427, \n Kendal = 10428, `King\'s Lynn` = 10429, Lancaster = 10430, Lindale = 10431, \n Liverpool = 10432, London = 10433, Lyme = 10434, Maryport = 10436, \n `Milford Haven` = 10437, `New Shoreham` = 10438, `Newcastle upon Tyne` = 10439, \n Newnham = 10440, `North Shields` = 10441, Norwich = 10443, Padstowe = 10444, \n Parkgate = 10445, `Piel of Foulney` = 10446, Plymouth = 10447, \n Poole = 10448, Portsery = 10449, Portsmouth = 10450, Poulton = 10451, \n Preston = 10452, Ramsgate = 10453, Ravenglass = 10454, `River Thames` = 10455, \n Rochester = 10456, Rotherhithe = 10457, Rye = 10458, Scarborough = 10459, \n Sheerness = 10460, Shields = 10461, Shoreham = 10462, Sidmouth = 10463, \n Southampton = 10464, Stockton = 10466, Stockwithe = 10467, Sunderland = 10468, \n Teignmouth = 10469, Topsham = 10470, Torbay = 10471, Wales = 10472, \nRun Code Online (Sandbox Code Playgroud)\n在 html 表中,我只有值:
\n\n如何用 spss 文件中的 data.frames 中的标签替换值?以便在 html 表格中显示?
\n使用 sjlabelled 包,我可以获得任何列的标签:
\nlibrary(sjlabelled)\nget_labels(voyages$portdep)\nRun Code Online (Sandbox Code Playgroud)\n1] “阿利坎特” “巴塞罗那” “毕尔巴鄂” “加的斯”
\n[5] “菲格拉” “直布罗陀” “拉科鲁\xc3\xb1a” “桑坦德”
\n[9] “塞维利亚” “圣卢卡” “维戈" "西班牙,港口未指定"
\n[13] "拉各斯" "里斯本" "波尔图" "法亚尔岛"
\n[17] "塞图巴尔" "葡萄牙,港口未指定" "英国,港口未指定" "巴茅斯"
\n[21] “比迪福德” “伯肯黑德” “布里斯托尔
” “布里克瑟姆” \n[25] “布罗德斯泰斯” “考桑德” “切普斯托” “切斯特”
\n[29] “科尔切斯特” “考斯” “达特茅斯” “德特福德"
\n[33] "多佛" "埃克塞特" "福克斯通" "弗罗德舍姆"
\n[37] "盖恩斯伯勒" "格林威治" "根西岛" "哈里奇"
\n[41] "赫尔" "伊尔弗勒科姆" "伊普斯威奇" "马恩岛”
\n[45]“怀特岛”“泽西岛”“肯德尔”“林恩国王”
我试过 :
\n在单列上:
\n dataset2 <- dataset %>% mutate(portdep = get_labels(portdep))\nRun Code Online (Sandbox Code Playgroud)\n\n\n错误:列的
\nportdep长度必须为 36002(行数)或\n,而不是 847
在所有数据框上:
\n dataset2 <- dataset %>% mutate_all(funs(get_labels(.)))\nRun Code Online (Sandbox Code Playgroud)\n第一列出现相同的错误:
\n\n\n列 xxx 的长度必须为 36002(行数)或 1,而不是 2
\n
我认为您可以通过使用来获得您正在寻找的东西haven::as_factor。
这有效吗?
library(haven)
library(dplyr)
dataset %>%
mutate_all(as_factor) %>%
head() %>%
View()
Run Code Online (Sandbox Code Playgroud)
haven您可以尝试使用 .package来代替foreign。我使用了自己的数据,try.sav包括变量gender:
library(haven)
df_haven<- read_sav("try.sav")
class(df_haven$gender)
#> [1] "haven_labelled"
table(df_haven$gender)
#>
#> 1 2
#> 1972 2417
df_haven$gender
#> <Labelled double>: Gender
#> [1] 2 2 2 1 2 2 2 2 2 2 2 2 2 1 2 2 2 2 2 1 2 2 2 2 2 2 1 1 1 1 2 2 2 2 2 2 2
#> [38] 2 2 2 1 2 2 1 2 2 2 2 2 2 2 2 1 2 2 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
#> [75] 2 2 1 1 2 2 1 2 1 2 1 1 2 1 2 1 1 2 2 2 2 2 1 1 2 2 1 2 1 2 2 2 1 1 2 2 1
#> ...
#> Labels:
#> value label
#> 1 male
#> 2 female
library(foreign)
df_foreign<- read.spss("try.sav", to.data.frame = TRUE)
#> re-encoding from UTF-8
class(df_foreign$gender)
#> [1] "factor"
table(df_foreign$gender)
#>
#> male female
#> 1972 2417
df_foreign$gender
#> [1] female female female male female female female female female female
#> [11] female female female male female female female female female male
#> [21] female female female female female female male male male male
#> [31] female female female female female female female female female female
#> [41] male female female male female female female female female female
#> [51] female female male female female female female male female female
#> [61] female female female female female female female female female female
#> [71] female female female female female female male male female female
#> [81] male female male female male male female male female male
#> [91] male female female female female female male male female female
....
#> Levels: male female
Run Code Online (Sandbox Code Playgroud)
由reprex 包(v0.3.0)于 2020-01-06 创建
| 归档时间: |
|
| 查看次数: |
1547 次 |
| 最近记录: |