1 工作环境设置

我们通常会将R的工作环境先进行一些设置,这些设置包括了「设定当前工作目录」、「设定系統中文文字编码」、以及「设定绘图物件中的中文文字」等项,以下是一些操作范例。

#呈现code 与output
knitr::opts_chunk$set(echo = TRUE) 
#设定当前工作目录(请选择一个你自己的工作目录)
setwd("/Users/simonfair/Desktop/量化研究数据分析/Ch3数据导入") 
#显示目前工作目录
getwd()
## [1] "/Users/simonfair/Desktop/量化研究数据分析/Ch3数据导入"
#设定系統中文文字編碼 (mac)
Sys.setlocale(category = "LC_ALL", locale = "en_US.UTF-8") #美式英文
## [1] "en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/zh_CN.UTF-8"
Sys.setlocale(category = "LC_ALL", locale = "Zh_TW.UTF-8") #繁体中文
## [1] "Zh_TW.UTF-8/Zh_TW.UTF-8/Zh_TW.UTF-8/C/Zh_TW.UTF-8/zh_CN.UTF-8"
Sys.setlocale(category = "LC_ALL", locale = "zh_CN.UTF-8") #简体中文
## [1] "zh_CN.UTF-8/zh_CN.UTF-8/zh_CN.UTF-8/C/zh_CN.UTF-8/zh_CN.UTF-8"
#载入showtext套件
library(showtext) 
## 载入需要的程辑包:sysfonts
## 载入需要的程辑包:showtextdb
#使绘图物件中的中文文字能正确呈现
showtext_auto(enable = TRUE)

在设置工作环境之后,现以一份简单的调查问卷为例,展示如何将问卷所得资料转汇入到R环境,成为R资料档,以便进行后续的数据分析。

2 问卷例示

假设有一份问卷,包含下列一些题目:


Q1. 请问您的性别? 01.男 02.女

Q2. 请问您是大几的学生? 01.大一 02.大二 03.大三 04.大四

Q3. 请问您目前就读的专业是什么? 01.新闻学 02.编辑出版学 03.传播学 04.网络与新媒体 05.数字媒体艺术 06.数字媒体技术

Q4. 平均来说,请问您一个月吃饭大概需要花多少钱? 01. 500以下 02. 501-1000 03. 1001-1500 04. 1501-2000 05. 2001以上

Q5. 总体来说,对于学校食堂所提供的餐食服务,您满不满意? 01.非常不满意 02.不太满意 03.一般/普通 04.还算满意 05.非常满意


假如研究者将受访者的回答数据,分别以“Table”,“CSV”,“Excel”, “Stata”, “SPSS”, 等不同数据的格式加以录入,哪我们如何将这些不同格式的外部数据, 加以读取并汇入到R呢?

#本章學習者須先下載R相關套件,之後方能正常運行 install.packages(“knitr”) install.packages(“readxl”) install.packages(“sjlabelled”) install.packages(“sjmisc”) install.packages(“sjPlot”)


3 读取外部数据

3.1 Table data (read.table)

先看一下Table数据(stfood2019table.txt)的格式示例:

Table数据外观示例 接下来,我们将当前工作目录下的“stfood2019table.txt”档案,透过R的“read.table()”函数将 数据汇入进R,将汇进来的档名命名为stfood2019table,并使用“head()”函数,呈现 stfood2019table此一数据的的前六笔资料。

#将表格数据汇入到R
stfood2019table<- read.table("stfood2019table.txt", sep=",", header=TRUE)
#看前六笔资料
head(stfood2019table)
##   Q1性别 Q2年级          Q3专业 Q4每月吃饭花费 Q5对学校食堂的满意度
## 1  02.女   大二 04.网络与新媒体   03.1001-1500          04.还算满意
## 2  01.男   大二 04.网络与新媒体   03.1001-1500          04.还算满意
## 3  02.女   大三       03.传播学   04.1501-2000          04.还算满意
## 4  02.女   大二 04.网络与新媒体    02.501-1000          04.还算满意
## 5  01.男   大二 04.网络与新媒体   04.1501-2000          04.还算满意
## 6  02.女   大二 04.网络与新媒体    05.2001以上          02.不太满意

3.2 CSV data(read.csv)

先看一下CSV数据(stfood2019.csv)的格式示例:

CSV数据外观示例

CSV数据外观示例

接下来,我们将当前工作目录下的“stfood2019.csv”档案,透过R的“read.csv()”函数将 数据汇入进R,将汇进来的档名命名为stfood2019CSV,并使用“head()”函数,呈现 stfood2019CSV此一数据的前六笔资料。

#将CSV数据汇入到R
stfood2019CSV<- read.csv("stfood2019.csv")
#看前六笔资料
head(stfood2019CSV)
##   Q1 Q2 Q3 Q4 Q5
## 1  2  2  4  3  4
## 2  1  2  4  3  4
## 3  2  3  3  4  4
## 4  2  2  4  2  4
## 5  1  2  4  4  4
## 6  2  2  4  5  2

3.3 Excel data(readx1::read_excel)

Excel数据(stfood2019.xls)的外观如下:

Excel数据外观示例

Excel数据外观示例

接下来,我们将当前工作目录下的“stfood2019.xls”档案,透过R“readx1”套件中的 “read_excel()”函数将数据汇入进R,将汇进来的档名命名为stfood2019XLS,并使用 “head()”函数,呈现stfood2019XLS此一数据的前六笔资料。

#调用"readx1" 套件
library(readxl) 
#将excel数据汇入到R
stfood2019XLS <- read_excel("stfood2019.xls")
#看前六笔资料
head(stfood2019XLS)
## # A tibble: 6 × 5
##      Q1    Q2    Q3    Q4    Q5
##   <dbl> <dbl> <dbl> <dbl> <dbl>
## 1     2     2     4     3     4
## 2     1     2     4     3     4
## 3     2     3     3     4     4
## 4     2     2     4     2     4
## 5     1     2     4     4     4
## 6     2     2     4     5     2

3.4 Stata data(sjlabelled::read_stata)

Stata数据(stfood2019.dta)的外观如下:

Stata数据外观示例

Stata数据外观示例

接下来,我们将当前工作目录下的“stfood2019.dta”档案,透过R“sjlabelled”套件中的 “read_stata()”函数将数据汇入进R,将汇进来的档名命名为stfood2019DTA,并使用 “head()”函数,呈现stfood2019DTA此一数据的前六笔资料。

#调用"sjlabelled" 套件
library(sjlabelled)
#将Stata数据汇入到R
stfood2019DTA <- read_stata("stfood2019.dta")
#看前六笔资料
head(stfood2019DTA)
##   Q1 Q2 Q3 Q4 Q5
## 1  2  2  4  3  4
## 2  1  2  4  3  4
## 3  2  3  3  4  4
## 4  2  2  4  2  4
## 5  1  2  4  4  4
## 6  2  2  4  5  2

3.5 SPSS data(sjlabelled::read_spss)

SPSS数据(stfood2019.sav)的外观如下:

SPSS数据外观示例

SPSS数据外观示例

接下来,我们将当前工作目录下的“stfood2019.sav”档案,透过R“sjlabelled”套件中的 “read_spss()”函数将数据汇入进R,将汇进来的档名命名为stfood2019SAV,并使用 “head()”函数,呈现stfood2019SAV此一数据的前六笔资料。

#调用"sjlabelled" 套件
library(sjlabelled)
#将SPSS数据汇入到R
stfood2019SAV <- read_spss("stfood2019.sav")
#看前六笔资料
head(stfood2019SAV)
##   Q1 Q2 Q3 Q4 Q5
## 1  2  2  4  3  4
## 2  1  2  4  3  4
## 3  2  3  3  4  4
## 4  2  2  4  2  4
## 5  1  2  4  4  4
## 6  2  2  4  5  2

另外,我们可以使用“knitr”套件中的“kable()”函数,将数据以kable表格格式显示, 并增加表格的表头标题。

knitr::kable(stfood2019SAV[1:6,],  #呈现前六笔资料
             caption = " A Knitr kable") #表头标题名称
A Knitr kable
Q1 Q2 Q3 Q4 Q5
2 2 4 3 4
1 2 4 3 4
2 3 3 4 4
2 2 4 2 4
1 2 4 4 4
2 2 4 5 2

此外,我们可以在RStudio的Console视窗,输入“?knitr::kable”,看看自订表格的其他方式 (说明内容会显示在RStudio的Help标签页)。

4 存成R数据資料檔(save)

我们可以使用“save()”函数,将从外部汇进来的档案(例如Excel,SPSS资料档)转存成R数据 资料档(.rda or .RData)。具体语法例示如下:

#将从外部汇进来的档案(例如Excel),转存成R数据资料档(*.rda)
save(stfood2019XLS, file = "stfood2019XLS.rda")
#将从外部汇进来的档案(例如SPSS),转存成R数据资料档(*.rda)
save(stfood2019SAV, file = "stfood2019SAV.rda")

5 载入R数据資料檔(load)

可以使用“load()”函数,将R数据资料档(.rda or .RData)载入到RStudio的记忆体中。

#从目前工作目录中,把R数据资料档载入进来
load("stfood2019XLS.rda")

6 查看R数据资料档中的资料(head,tail,dim,names,View,fix)

R数据档被载入后, 可以使用“head()”函数,呈现使用中R数据资料档的前六笔资料; 或使用“tail()”函数,呈现后六笔资料。 使用“dim()”函数,查看使用中的R数据资料档包含了几笔资料、几个变量。 使用“names()”函数,查看R数据料档中所有变量的变量名称。 使用“View()”函数,可以在RStudio开启另外一个小窗口,检视使用中数据所有的变量与个案。 使用“fix()”函数,可以在RStudio开启另外一个小窗口,检视并修正变量的数据代码。

#查看前六笔资料
head(stfood2019XLS)
## # A tibble: 6 × 5
##      Q1    Q2    Q3    Q4    Q5
##   <dbl> <dbl> <dbl> <dbl> <dbl>
## 1     2     2     4     3     4
## 2     1     2     4     3     4
## 3     2     3     3     4     4
## 4     2     2     4     2     4
## 5     1     2     4     4     4
## 6     2     2     4     5     2
#查看后六笔资料
tail(stfood2019XLS)
## # A tibble: 6 × 5
##      Q1    Q2    Q3    Q4    Q5
##   <dbl> <dbl> <dbl> <dbl> <dbl>
## 1     2     3     1     2     4
## 2     2     3     1     3     3
## 3     2     3     1     3     4
## 4     2     3     1     2     2
## 5     1     4     5     5     4
## 6     1     4     5     5     4
#查看R数据料档中包含了几笔资料,几个变量
dim(stfood2019XLS)
## [1] 1058    5
#查看R数据料档中所有变量的变量名称
names(stfood2019XLS)
## [1] "Q1" "Q2" "Q3" "Q4" "Q5"
##开启新窗口,检视使用中数据所有的变量与个案。
View(stfood2019XLS)
## Warning in system2("/usr/bin/otool", c("-L", shQuote(DSO)), stdout = TRUE): 运
## 行命令''/usr/bin/otool' -L '/Library/Frameworks/R.framework/Resources/modules/
## R_de.so''的状态是1
#开启新窗口,检视并可修正变量的数据代码。
fix(stfood2019XLS)
## Warning in system2("/usr/bin/otool", c("-L", shQuote(DSO)), stdout = TRUE): 运
## 行命令''/usr/bin/otool' -L '/Library/Frameworks/R.framework/Resources/modules/
## R_de.so''的状态是1
View数据外观示例

View数据外观示例

fix数据外观示例

fix数据外观示例

7 设置类别变量属性(sjlabelled::to_factor)

变量(variable)一般可分为「类别变量」(categorical variables)(定类变量、定序变量) 与「连续变量」(numeric variables)(定距变量、定比变量)两大属性。R对于变量的属性 设置是很敏感的,关系到不同属性的变量会适用到各自不同的统计分析方法。因此,在进行 数据分析之前,研究者需针对所欲分析的变量,进行变量属性的设置。

当数据被载入到R,如果没有做任何的设置,R会将数据中的各个变量默认为「连续变量」。 假如我们要将数据中的一些变量设置为「类别变量」,则可调用“sjlabelled”套件的 “to_factor()”函数,来完成这项工作。以stfood2019XLS此一数据而言,根据调查问卷的 内容,我们可以知道,stfood2019XLS数据中的五个变量(Q1~Q5)都应该被当成「类别变量」 来看待。具体语法例示如下:

#调用sjlabelled套件
library(sjlabelled)
#将变量设置为类别变量(to_factor)
stfood2019XLS$Q1 <- to_factor(stfood2019XLS$Q1)
stfood2019XLS$Q2 <- to_factor(stfood2019XLS$Q2)
stfood2019XLS$Q3 <- to_factor(stfood2019XLS$Q3)
stfood2019XLS$Q4 <- to_factor(stfood2019XLS$Q4)
stfood2019XLS$Q5 <- to_factor(stfood2019XLS$Q5)

8 查看变量的属性与结构(class, str)

可以透过“class()”函数,查看变量的属性。输出如果显示“factor”代表该变量被设置为 「类别变量」,如果显示“numeric”代表该变量被设置为「连续变量」。也可以使用“str” 函数,同时查看变量的属性(factor vs. numeric)、(如果是类别变量的话)分成几类 (levels)、以及变量的前几笔资料。

class(stfood2019XLS$Q1)
## [1] "factor"
class(stfood2019XLS$Q2)
## [1] "factor"
class(stfood2019XLS$Q3)
## [1] "factor"
class(stfood2019XLS$Q4)
## [1] "factor"
class(stfood2019XLS$Q5)
## [1] "factor"
str(stfood2019XLS$Q5)
##  Factor w/ 5 levels "1","2","3","4",..: 4 4 4 4 4 2 4 3 3 4 ...

9 设置变量标签与变量值标签(sjlabelled::set_label set_labels)

从外部数据汇进R的档案(如CSV档案,Excel档案等)大部分都只有变量的数值代码,但没有 变量的标签说明(variable label),也没有变量值的标签说明(value label),所以需要 研究者进一步设置。 可以调用“sjlabelled”套件的“set label()”函数进行变量标签的设置;“set labels()” 函数进行变量值标签的设置。具体语法例示如下:

#调用sjlabelled套件
library(sjlabelled)
#增加变量标签(set_label)与变量值标签(set_labels)
#Q1
stfood2019XLS$Q1 <- set_label(stfood2019XLS$Q1,
                             label = "Q1请问您的性别")
stfood2019XLS$Q1 <- set_labels(stfood2019XLS$Q1,
                              labels = c("男", "女"))
#Q2
stfood2019XLS$Q2 <- set_label(stfood2019XLS$Q2,
                    label = "Q2请问您是大几的学生")
stfood2019XLS$Q2 <- set_labels(stfood2019XLS$Q2,
                    labels = c("大一", "大二", "大三", "大四"))
#Q3
stfood2019XLS$Q3 <- set_label(stfood2019XLS$Q3,
                    label = "Q3请问您目前就读的专业")
stfood2019XLS$Q3 <- set_labels(stfood2019XLS$Q3,
                    labels = c("新闻学", "编辑出版学", "传播学", "网络与新媒体",
                               "数字媒体艺术","数字媒体技术"))
#Q4
stfood2019XLS$Q4 <- set_label(stfood2019XLS$Q4,
                    label = "Q4平均来说,请问您一个月吃饭大概花多少钱")
stfood2019XLS$Q4 <- set_labels(stfood2019XLS$Q4,
                    labels = c("500以下", "501-1000", "1001-1500", "1501-2000",
                               "2001以上"))
#Q5      
stfood2019XLS$Q5 <- set_label(stfood2019XLS$Q5,
                    label = "Q5总体来说,对于食堂所提供的餐食服务,您满不满意")
stfood2019XLS$Q5 <- set_labels(stfood2019XLS$Q5,
                    labels = c("非常不满意", "不太满意", "一般/普通", 
                               "还算满意", "非常满意"))

10 查看变量标签与变量值标签(sjlabelled::get_label get_labels)

可以透过“sjlabelled”套件的“get_label()”函数查看数据中每个变量的标签说明, “get_labels()”函数查看每个变量值的标签说明。

library(sjlabelled)
get_label(stfood2019XLS)
##                                                 Q1 
##                                   "Q1请问您的性别" 
##                                                 Q2 
##                             "Q2请问您是大几的学生" 
##                                                 Q3 
##                           "Q3请问您目前就读的专业" 
##                                                 Q4 
##         "Q4平均来说,请问您一个月吃饭大概花多少钱" 
##                                                 Q5 
## "Q5总体来说,对于食堂所提供的餐食服务,您满不满意"
get_labels(stfood2019XLS)
## $Q1
## [1] "男" "女"
## 
## $Q2
## [1] "大一" "大二" "大三" "大四"
## 
## $Q3
## [1] "新闻学"       "编辑出版学"   "传播学"       "网络与新媒体" "数字媒体艺术"
## [6] "数字媒体技术"
## 
## $Q4
## [1] "500以下"   "501-1000"  "1001-1500" "1501-2000" "2001以上" 
## 
## $Q5
## [1] "非常不满意" "不太满意"   "一般/普通"  "还算满意"   "非常满意"

11 频数分布

11.1 R 基本函数: table, prop.table

在设置完成变量标签与变量值标签之后,我们就可以先做个变量的频数分布。在R的基本 函数中,可以使用“table()”函数,呈现变量的频数;使用prop.table(table())函数, 呈现变量各个数值的比例(百分比)。

table(stfood2019XLS$Q1) #呈现频数
## 
##   1   2 
## 415 643
prop.table(table(stfood2019XLS$Q1)) #呈现比例(百分比)
## 
##         1         2 
## 0.3922495 0.6077505

11.2 sjmisc::frq

我们可以进一步调用“sjmisc”套件的“frq”函数,以呈现比较精美且符合学术要求的频数 分布表。“frq”函数有个选项“out”,如果都不设置,则频数分布结果会以纯文字形式(txt) 呈现在RStudio的Console视窗; 如果将out选项设置为out=“browser” or out= “b”,则频数分布结果会以使用者预设的 浏览器开启; 如果将out选项设置为out=“viewer” or out= “v”,则频数分布结果会呈现在 RStudio的Viewer视窗

#调用sjmisc套件
library(sjmisc)
#频数分布(frq)
frq(stfood2019XLS$Q1) #频数分布结果以纯文字形式呈现在RStudio的Console视窗
## 
## Q1请问您的性别 (x) <categorical>
## # total N=1058  valid N=1058  mean=1.61  sd=0.49
## 
## Value | Label |   N | Raw % | Valid % | Cum. %
## ----------------------------------------------
##     1 |    男 | 415 | 39.22 |   39.22 |  39.22
##     2 |    女 | 643 | 60.78 |   60.78 | 100.00
##  <NA> |  <NA> |   0 |  0.00 |    <NA> |   <NA>
frq(stfood2019XLS$Q4, out = "browser")#频数分布结果以使用者预设的浏览器开启
Q4平均来说,请问您一个月吃饭大概花多少钱 (x) <categorical>
val label frq raw.prc valid.prc cum.prc
1 500以下 10 0.95 0.95 0.95
2 501-1000 136 12.85 12.85 13.80
3 1001-1500 387 36.58 36.58 50.38
4 1501-2000 418 39.51 39.51 89.89
5 2001以上 107 10.11 10.11 100.00
NA NA 0 0.00 NA NA
total N=1058 · valid N=1058 · x̄=3.45 · σ=0.87
frq(stfood2019XLS$Q5, out = "viewer")#频数分布结果呈现在RStudio的Viewer视窗
Q5总体来说,对于食堂所提供的餐食服务,您满不满意 (x) <categorical>
val label frq raw.prc valid.prc cum.prc
1 非常不满意 18 1.70 1.70 1.70
2 不太满意 103 9.74 9.74 11.44
3 一般/普通 411 38.85 38.85 50.28
4 还算满意 473 44.71 44.71 94.99
5 非常满意 53 5.01 5.01 100.00
NA NA 0 0.00 NA NA
total N=1058 · valid N=1058 · x̄=3.42 · σ=0.80
browser输出外观示例

browser输出外观示例

View输出外观示例

View输出外观示例

以frq(…, out=“viewer”)所产生的频数分布表为例, “val”是value的缩写,数值代码之意。 “label”为变量标签之意。 “frq”是frequencies的缩写,频数之意。 “raw.prc”是raw percent的缩写,原始百分比之意(包含缺失值个案在内的百分比)。 “valid.prc”是valid percent的缩写,有效百分比之意(扣除缺失值个案后的百分比)。 “cum.prc”是cumulative percent的缩写,累积有效百分比之意。 “NA” 是Not Available的缩写,遗漏值或缺失值之意。

在设置好变量标签与变量值标签后,我们就可以把数据资料档存档,以变日后直接提取时, 就不需要再做一次变量标签与变量值标签设置的重复工作了。

#将已设置好标签的数据资料,存档(*.rda)
save(stfood2019XLS, file = "stfood2019XLS.rda")
#载入已设置好标签的数据资料档(*.rda)
load("stfood2019XLS.rda")
#调用"sjmisc"套件
library(sjmisc)
#频数分布
frq(stfood2019XLS$Q5)
## 
## Q5总体来说,对于食堂所提供的餐食服务,您满不满意 (x) <categorical>
## # total N=1058  valid N=1058  mean=3.42  sd=0.80
## 
## Value |      Label |   N | Raw % | Valid % | Cum. %
## ---------------------------------------------------
##     1 | 非常不满意 |  18 |  1.70 |    1.70 |   1.70
##     2 |   不太满意 | 103 |  9.74 |    9.74 |  11.44
##     3 |  一般/普通 | 411 | 38.85 |   38.85 |  50.28
##     4 |   还算满意 | 473 | 44.71 |   44.71 |  94.99
##     5 |   非常满意 |  53 |  5.01 |    5.01 | 100.00
##  <NA> |       <NA> |   0 |  0.00 |    <NA> |   <NA>

对于spss数据资料而言,一般来说研究者通常会在SPSS中将各个变量(值)的标签事先设置好 ,所以在汇入外部数据时,如果汇入的是SPSS数据,则通常可以不用再在R环境去设置 各个变量(值)的标签,直接调用“sjmisc”套件的“frq”函数,就可以呈现带有标签说明的 频数分布表了。

SPSS数据资料档外观示例如下:

SPSS数据资料档外观示例

SPSS数据资料档外观示例

#调用"sjlabelled" 套件
library(sjlabelled)
#将SPSS数据汇入到R
stfood2019SAV <- read_spss("stfood2019.sav")
#调用"sjmisc"套件
library(sjmisc)
#频数分布(一次呈现数据资料档中所有变量的频数分布)
frq(stfood2019SAV)
## 
## 1.请问您的性别是? (Q1) <numeric>
## # total N=1058  valid N=1058  mean=1.61  sd=0.49
## 
## Value | Label |   N | Raw % | Valid % | Cum. %
## ----------------------------------------------
##     1 | 01.男 | 415 | 39.22 |   39.22 |  39.22
##     2 | 02.女 | 643 | 60.78 |   60.78 | 100.00
##  <NA> |  <NA> |   0 |  0.00 |    <NA> |   <NA>
## 
## 
## 2. 请问您是大几的学生? (Q2) <numeric>
## # total N=1058  valid N=1058  mean=2.53  sd=1.12
## 
## Value | Label |   N | Raw % | Valid % | Cum. %
## ----------------------------------------------
##     1 |  大一 | 243 | 22.97 |   22.97 |  22.97
##     2 |  大二 | 299 | 28.26 |   28.26 |  51.23
##     3 |  大三 | 227 | 21.46 |   21.46 |  72.68
##     4 |  大四 | 289 | 27.32 |   27.32 | 100.00
##  <NA> |  <NA> |   0 |  0.00 |    <NA> |   <NA>
## 
## 
## 3. 请问您目前就读的专业是什么? (Q3) <numeric>
## # total N=1058  valid N=1058  mean=3.10  sd=1.43
## 
## Value |           Label |   N | Raw % | Valid % | Cum. %
## --------------------------------------------------------
##     1 |       01.新闻学 | 166 | 15.69 |   15.69 |  15.69
##     2 |   02.编辑出版学 | 223 | 21.08 |   21.08 |  36.77
##     3 |       03.传播学 | 288 | 27.22 |   27.22 |  63.99
##     4 | 04.网络与新媒体 | 135 | 12.76 |   12.76 |  76.75
##     5 | 05.数字媒体艺术 | 215 | 20.32 |   20.32 |  97.07
##     6 | 06.数字媒体技术 |  31 |  2.93 |    2.93 | 100.00
##  <NA> |            <NA> |   0 |  0.00 |    <NA> |   <NA>
## 
## 
## 5. 平均来说,请问您一个月吃饭大概花多少钱? (Q4) <numeric>
## # total N=1058  valid N=1058  mean=3.45  sd=0.87
## 
## Value |        Label |   N | Raw % | Valid % | Cum. %
## -----------------------------------------------------
##     1 |   01.500以下 |  10 |  0.95 |    0.95 |   0.95
##     2 |  02.501-1000 | 136 | 12.85 |   12.85 |  13.80
##     3 | 03.1001-1500 | 387 | 36.58 |   36.58 |  50.38
##     4 | 04.1501-2000 | 418 | 39.51 |   39.51 |  89.89
##     5 |  05.2001以上 | 107 | 10.11 |   10.11 | 100.00
##  <NA> |         <NA> |   0 |  0.00 |    <NA> |   <NA>
## 
## 
## 14.总体来说,对于食堂所提供的餐食服务,您满不满意? (Q5) <numeric>
## # total N=1058  valid N=1058  mean=3.42  sd=0.80
## 
## Value |         Label |   N | Raw % | Valid % | Cum. %
## ------------------------------------------------------
##     1 | 01.非常不满意 |  18 |  1.70 |    1.70 |   1.70
##     2 |   02.不太满意 | 103 |  9.74 |    9.74 |  11.44
##     3 |  03.一般‎/普通 | 411 | 38.85 |   38.85 |  50.28
##     4 |   04.还算满意 | 473 | 44.71 |   44.71 |  94.99
##     5 |   05.非常满意 |  53 |  5.01 |    5.01 | 100.00
##  <NA> |          <NA> |   0 |  0.00 |    <NA> |   <NA>

12 编码簿 sjPlot::view_df

我们可以调用“sjPlot”套件中的“view_df”函数,一次清楚呈现各个变量的名称(Names)、 变量标签(Variable Labels)、变量值(Values)、变量值标签(Value Labels)、 频数分布(Freq.)以及百分比(%)等相关资讯。 这些资讯构成了我们常说的“编码簿”(coding book)

#调用"sjPlot"套件
library(sjPlot)
## #refugeeswelcome
#呈现编码簿
view_df(stfood2019SAV,   #指明R资料档的档案名称
        show.na = TRUE,  #呈现缺失值
        show.frq = TRUE, #呈现频数分布
        show.prc = TRUE) #呈现百分比 
Data frame: stfood2019SAV
ID Name Label missings Values Value Labels Freq. %
1 Q1 1.请问您的性别是? 0 (0.00%) 1
2
01.男
02.女
415
643
39.22
60.78
2 Q2
  1. 请问您是大几的学生?
0 (0.00%) 1
2
3
4
大一
大二
大三
大四
243
299
227
289
22.97
28.26
21.46
27.32
3 Q3
  1. 请问您目前就读的专业是什么?
0 (0.00%) 1
2
3
4
5
6
01.新闻学
02.编辑出版学
03.传播学
04.网络与新媒体
05.数字媒体艺术
06.数字媒体技术
166
223
288
135
215
31
15.69
21.08
27.22
12.76
20.32
2.93
4 Q4
  1. 平均来说,请问您一个月吃饭大概花多少钱?
0 (0.00%) 1
2
3
4
5
01.500以下
02.501-1000
03.1001-1500
04.1501-2000
05.2001以上
10
136
387
418
107
0.95
12.85
36.58
39.51
10.11
5 Q5 14.总体来说,对于食堂所提供的餐食服务,您满不满意? 0 (0.00%) 1
2
3
4
5
01.非常不满意
02.不太满意
03.一般‎/普通
04.还算满意
05.非常满意
18
103
411
473
53
1.70
9.74
38.85
44.71
5.01

此一编码簿的外观示例如下:

编码簿外观示例

编码簿外观示例

当我们的数据分析工作告一段落后,我们经常会使用“rm(list = ls())”这个函数, 清除R记忆体中所有物件与资料,以便在进行下次数据分析时,R的工作环境有个全新的开始。

rm(list = ls()) #清除记忆体中所有物件与资料     

13 本章小结

此处将本章所使用到的R套件与函数摘录如下表,供学习者快速查阅。

本章所使用的R套件与函数
套件 函数 说明
base install.packages() 下载套件
library() 调用套件
read.table() 将Table格式数据资料档汇入到R
read.csv() 将CSV格式数据资料档汇入到R
save() 将档案存成R数据资料档格式(*.rda)
load() 载入R数据资料档(*.rda)
head() 查看R数据的前六笔资料
tail() 查看R数据的后六笔资料
dim() 查看R数据中包含几笔资料,几个变量
names() 查看变量的名称
View() 在RStudio新开窗口,检视数据资料
fix() 在RStudio新开窗口,检视并修正数据资料
class() 查看变量的属性
str() 查看变量的属性、分类数目、以及前几笔资料
table() 呈现变量的频数
prop.table() 呈现变量的频数比例(百分比)
rm(list=ls()) 去除R当前工作环境中所有的数据与物件
knitr kable() 将变量资料以kable表格方式呈现
readxl read_excel() 将Excel格式数据资料档(*.xls)汇入到R
sjlabelled read_spss() 将SPSS格式数据资料档(*.sav)汇入到R
read_stata() 将Stata格式数据资料档(*.dta)汇入到R
to_factor() 将变量设置为类别变量
to_numeric() 将变量设置为连续变量
set_label() 设置变量标签(variable label)
set_labels() 设置变量值标签(value label)
get_label() 查看变量标签
get_labels() 查看变量值标签
sjmisc frq() 呈现频数分布表
sjPlot view_df() 呈现R数据资料的编码簿