1 专案工作环境设置

#呈现code 与output
knitr::opts_chunk$set(echo = TRUE) 
#设定当前工作目录(请选择一个你自己的工作目录)
setwd("/Users/simonfair/Desktop/闽南师范大学/量化培训班/(5)20230330")
#(或菜單點選)session->set working directory->choose directory
#显示目前工作目录
getwd()
## [1] "/Users/simonfair/Desktop/闽南师范大学/量化培训班/(5)20230330"
#设定系統中文文字編碼 (mac/win)
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"
#查看目前的系统编码
Sys.getlocale() #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)

2 读取spss数据档

2.1 调用”sjlabelled” 套件

library(sjlabelled)

2.2 将SPSS数据汇入到R

TCS2015sc <- read_spss("TCS2015sc.sav")
## Converting atomic to factors. Please wait...

2.3 查看数据档中的变量名称

names(TCS2015sc)
##  [1] "ID"         "strata"     "A1"         "A2.year"    "A2.age"    
##  [6] "age_strata" "A7"         "A8"         "B1a"        "B1b"       
## [11] "B2"         "C1a"        "C1b.1"      "C1b.2"      "C3"        
## [16] "C4a"        "C4b.1"      "C4b.2"      "D1a"        "D1b.1"     
## [21] "D1b.2"      "E1"         "E2.1"       "E2.2"       "F6"        
## [26] "F7.1"       "F7.2"       "G1.1.A"     "G1.1.B"     "G1.1.C"    
## [31] "G2.1"       "G2.2"       "G2.3"       "G2.4"       "G2.5"      
## [36] "G2.6"       "G2.7"       "G4.1"       "G4.2"       "G4.3.1"    
## [41] "G4.3.2"     "G5.1"       "G5.2"       "G5.3"       "G5.4"      
## [46] "H1"         "H2"         "H3"         "H4.1"       "H4.2"      
## [51] "H4.3"       "H4.4"       "H4.5"       "I1"         "I3.1"      
## [56] "I3.2"       "I3.3"       "I3.4"       "I3.5"       "I3.6"      
## [61] "I3.7"       "I3.8"       "I3.9"       "I3.10"      "I3.11"     
## [66] "I3.12"      "I3.13"      "I3.14"      "I3.88"      "J1.1"      
## [71] "J1.2"       "J1.3"       "J1.4"       "J1.5"       "J2.1"      
## [76] "J2.2"       "J2.3"       "J2.4"       "J2.5"       "S1.1"      
## [81] "S1.2"       "S1.3"       "S1.4"       "S1.5"       "S1.6"      
## [86] "S1.7"       "S1.8"       "S1.9"       "S1.10"      "V1.1"      
## [91] "V1.2"       "V1.3"       "V1.4"       "V1.5"       "W3"        
## [96] "weight1"    "W_Raking"

3 类别变量的描述统计

3.1 单选题频数分布 sjmisc::frq(); sjmisc::frq(,weights=)

library(sjmisc) 
frq(TCS2015sc$V1.1) #原始未加权
## V1.1. 整体而言,你对于你的生活满不满意 (x) <categorical> 
## # total N=2002 valid N=2002 mean=2.78 sd=0.57
## 
## Value |      Label |    N | Raw % | Valid % | Cum. %
## ----------------------------------------------------
##     1 | 非常不满意 |   56 |  2.80 |    2.80 |   2.80
##     2 |     不满意 |  429 | 21.43 |   21.43 |  24.23
##     3 |       满意 | 1420 | 70.93 |   70.93 |  95.15
##     4 |   非常满意 |   97 |  4.85 |    4.85 | 100.00
##  <NA> |       <NA> |    0 |  0.00 |    <NA> |   <NA>
frq(TCS2015sc$V1.1, weights = TCS2015sc$weight1) #加权后
## V1.1. 整体而言,你对于你的生活满不满意 (xw) <categorical> 
## # total N=2001 valid N=2001 mean=2.79 sd=0.57
## 
## Value |      Label |    N | Raw % | Valid % | Cum. %
## ----------------------------------------------------
##     1 | 非常不满意 |   55 |  2.75 |    2.75 |   2.75
##     2 |     不满意 |  420 | 20.99 |   20.99 |  23.74
##     3 |       满意 | 1420 | 70.96 |   70.96 |  94.70
##     4 |   非常满意 |  106 |  5.30 |    5.30 | 100.00
##  <NA> |       <NA> |    0 |  0.00 |    <NA> |   <NA>

3.2 单选题频数分布(按照频数升幂) sjmisc::frq(,sort.frq=c(“asc”)

frq(TCS2015sc$V1.1, sort.frq = c("asc")) #升幂(原始未加权)
## V1.1. 整体而言,你对于你的生活满不满意 (x) <categorical> 
## # total N=2002 valid N=2002 mean=2.78 sd=0.57
## 
## Value |      Label |    N | Raw % | Valid % | Cum. %
## ----------------------------------------------------
##     1 | 非常不满意 |   56 |  2.80 |    2.80 |   2.80
##     4 |   非常满意 |   97 |  4.85 |    4.85 |   7.64
##     2 |     不满意 |  429 | 21.43 |   21.43 |  29.07
##     3 |       满意 | 1420 | 70.93 |   70.93 | 100.00
##  <NA> |       <NA> |    0 |  0.00 |    <NA> |   <NA>
frq(TCS2015sc$V1.1, sort.frq = c("asc"), 
    weights = TCS2015sc$weight1) #升幂(加权后)
## V1.1. 整体而言,你对于你的生活满不满意 (xw) <categorical> 
## # total N=2001 valid N=2001 mean=2.79 sd=0.57
## 
## Value |      Label |    N | Raw % | Valid % | Cum. %
## ----------------------------------------------------
##     1 | 非常不满意 |   55 |  2.75 |    2.75 |   2.75
##     4 |   非常满意 |  106 |  5.30 |    5.30 |   8.05
##     2 |     不满意 |  420 | 20.99 |   20.99 |  29.04
##     3 |       满意 | 1420 | 70.96 |   70.96 | 100.00
##  <NA> |       <NA> |    0 |  0.00 |    <NA> |   <NA>

3.3 单选题频数分布(按照频数降幂) sjmisc::frq(,sort.frq=c(“desc”)

frq(TCS2015sc$V1.1, sort.frq = c("desc")) #降幂(原始未加权)
## V1.1. 整体而言,你对于你的生活满不满意 (x) <categorical> 
## # total N=2002 valid N=2002 mean=2.78 sd=0.57
## 
## Value |      Label |    N | Raw % | Valid % | Cum. %
## ----------------------------------------------------
##     3 |       满意 | 1420 | 70.93 |   70.93 |  70.93
##     2 |     不满意 |  429 | 21.43 |   21.43 |  92.36
##     4 |   非常满意 |   97 |  4.85 |    4.85 |  97.20
##     1 | 非常不满意 |   56 |  2.80 |    2.80 | 100.00
##  <NA> |       <NA> |    0 |  0.00 |    <NA> |   <NA>
frq(TCS2015sc$V1.1, sort.frq = c("desc"),
    weights = TCS2015sc$weight1) #降幂(加权后)
## V1.1. 整体而言,你对于你的生活满不满意 (xw) <categorical> 
## # total N=2001 valid N=2001 mean=2.79 sd=0.57
## 
## Value |      Label |    N | Raw % | Valid % | Cum. %
## ----------------------------------------------------
##     3 |       满意 | 1420 | 70.96 |   70.96 |  70.96
##     2 |     不满意 |  420 | 20.99 |   20.99 |  91.95
##     4 |   非常满意 |  106 |  5.30 |    5.30 |  97.25
##     1 | 非常不满意 |   55 |  2.75 |    2.75 | 100.00
##  <NA> |       <NA> |    0 |  0.00 |    <NA> |   <NA>

3.4 条形图 sjPlot::plot_frq(,type=“bar”); sjPlot::plot_frq(,type=“bar”, weight.by=)

library(sjPlot)
## #refugeeswelcome
plot_frq(TCS2015sc$V1.1,type = "bar") #原始未加权

plot_frq(TCS2015sc$V1.1,type = "bar", weight.by = TCS2015sc$weight1)#加权后

3.5 饼图 base::pie()

library(sjmisc)
frq(TCS2015sc$V1.1, weights = TCS2015sc$weight1) #呈現频数分布(加权后)
## V1.1. 整体而言,你对于你的生活满不满意 (xw) <categorical> 
## # total N=2001 valid N=2001 mean=2.79 sd=0.57
## 
## Value |      Label |    N | Raw % | Valid % | Cum. %
## ----------------------------------------------------
##     1 | 非常不满意 |   55 |  2.75 |    2.75 |   2.75
##     2 |     不满意 |  420 | 20.99 |   20.99 |  23.74
##     3 |       满意 | 1420 | 70.96 |   70.96 |  94.70
##     4 |   非常满意 |  106 |  5.30 |    5.30 | 100.00
##  <NA> |       <NA> |    0 |  0.00 |    <NA> |   <NA>
slice.pct <- c(2.8,21.0,71.0,5.3) #產生一個向量变量:slice.pct, 并依次输入数据(百分比)
col_c = c(1:4) #使用系统预设的颜色1,颜色2,颜色3,颜色4
pie(slice.pct, main = "Pie Chart 园饼图%", #加上标题
    labels = c("非常不满意 2.8%", "不满意 21.0%", "满意 71.0%", "非常满意 5.3%"),
    col = col_c) #加上颜色与说明的pie图

3.6 复选题

3.6.1 尋找特定变量

library(sjmisc)
find_var(TCS2015sc, "最重要的问题")
##    col.nr var.name                                                 var.label
## 1      55     I3.1            I3. 请问你认为哪一项是当前最重要的问题?(经济)
## 2      56     I3.2        I3. 请问你认为哪一项是当前最重要的问题?(两岸关系)
## 3      57     I3.3            I3. 请问你认为哪一项是当前最重要的问题?(教育)
## 4      58     I3.4           I3. 请问你认为哪一项是当前最重要的问题?(医疗)
## 5      59     I3.5           I3. 请问你认为哪一项是当前最重要的问题?(治安)
## 6      60     I3.6           I3. 请问你认为哪一项是当前最重要的问题?(环保)
## 7      61     I3.7          I3.  请问你认为哪一项是当前最重要的问题?(司法)
## 8      62     I3.8 I3. 请问你认为哪一项是当前最重要的问题?(社会伦理与价值)
## 9      63     I3.9       I3. 请问你认为哪一项是当前最重要的问题?(地方建设)
## 10     64    I3.10       I3. 请问你认为哪一项是当前最重要的问题?(国家认同)
## 11     65    I3.11       I3. 请问你认为哪一项是当前最重要的问题?(食品安全)
## 12     66    I3.12       I3. 请问你认为哪一项是当前最重要的问题?(薪资所得)
## 13     67    I3.13       I3. 请问你认为哪一项是当前最重要的问题?(水土保持)
## 14     68    I3.14       I3. 请问你认为哪一项是当前最重要的问题?(政党对立)
## 15     69    I3.88           I3. 请问你认为哪一项是当前最重要的问题?(其他)
#I3.1~I3.14, I3.88+I3.88.a

3.6.2 呈现复选题各题的加权后次数分布

library(sjmisc)
frq(TCS2015sc, I3.1:I3.14, I3.88, weights = TCS2015sc$weight1) #加权后
## I3. 请问你认为哪一项是当前最重要的问题?(经济) (I3.1) <categorical> 
## # total N=1192 valid N=1192 mean=1.00 sd=0.00
## 
## Value | Label |    N | Raw % | Valid % | Cum. %
## -----------------------------------------------
##     1 |  經濟 | 1192 |   100 |     100 |    100
##  <NA> |  <NA> |    0 |     0 |    <NA> |   <NA>
## 
## I3. 请问你认为哪一项是当前最重要的问题?(两岸关系) (I3.2) <categorical> 
## # total N=319 valid N=319 mean=1.00 sd=0.00
## 
## Value |    Label |   N | Raw % | Valid % | Cum. %
## -------------------------------------------------
##     1 | 兩岸關係 | 319 |   100 |     100 |    100
##  <NA> |     <NA> |   0 |     0 |    <NA> |   <NA>
## 
## I3. 请问你认为哪一项是当前最重要的问题?(教育) (I3.3) <categorical> 
## # total N=650 valid N=650 mean=1.00 sd=0.00
## 
## Value | Label |   N | Raw % | Valid % | Cum. %
## ----------------------------------------------
##     1 |  教育 | 650 |   100 |     100 |    100
##  <NA> |  <NA> |   0 |     0 |    <NA> |   <NA>
## 
## I3. 请问你认为哪一项是当前最重要的问题?(医疗) (I3.4) <categorical> 
## # total N=225 valid N=225 mean=1.00 sd=0.00
## 
## Value | Label |   N | Raw % | Valid % | Cum. %
## ----------------------------------------------
##     1 |  醫療 | 225 |   100 |     100 |    100
##  <NA> |  <NA> |   0 |     0 |    <NA> |   <NA>
## 
## I3. 请问你认为哪一项是当前最重要的问题?(治安) (I3.5) <categorical> 
## # total N=381 valid N=381 mean=1.00 sd=0.00
## 
## Value | Label |   N | Raw % | Valid % | Cum. %
## ----------------------------------------------
##     1 |  治安 | 381 |   100 |     100 |    100
##  <NA> |  <NA> |   0 |     0 |    <NA> |   <NA>
## 
## I3. 请问你认为哪一项是当前最重要的问题?(环保) (I3.6) <categorical> 
## # total N=197 valid N=197 mean=1.00 sd=0.00
## 
## Value | Label |   N | Raw % | Valid % | Cum. %
## ----------------------------------------------
##     1 |  環保 | 197 |   100 |     100 |    100
##  <NA> |  <NA> |   0 |     0 |    <NA> |   <NA>
## 
## I3. 请问你认为哪一项是当前最重要的问题?(司法) (I3.7) <categorical> 
## # total N=236 valid N=236 mean=1.00 sd=0.00
## 
## Value | Label |   N | Raw % | Valid % | Cum. %
## ----------------------------------------------
##     1 |  司法 | 236 |   100 |     100 |    100
##  <NA> |  <NA> |   0 |     0 |    <NA> |   <NA>
## 
## I3. 请问你认为哪一项是当前最重要的问题?(社会伦理与价值) (I3.8) <categorical> 
## # total N=272 valid N=272 mean=1.00 sd=0.00
## 
## Value |          Label |   N | Raw % | Valid % | Cum. %
## -------------------------------------------------------
##     1 | 社會倫理與價值 | 272 |   100 |     100 |    100
##  <NA> |           <NA> |   0 |     0 |    <NA> |   <NA>
## 
## I3. 请问你认为哪一项是当前最重要的问题?(地方建设) (I3.9) <categorical> 
## # total N=94 valid N=94 mean=1.00 sd=0.00
## 
## Value |    Label |  N | Raw % | Valid % | Cum. %
## ------------------------------------------------
##     1 | 地方建設 | 94 |   100 |     100 |    100
##  <NA> |     <NA> |  0 |     0 |    <NA> |   <NA>
## 
## I3. 请问你认为哪一项是当前最重要的问题?(国家认同) (I3.10) <categorical> 
## # total N=168 valid N=168 mean=1.00 sd=0.00
## 
## Value |    Label |   N | Raw % | Valid % | Cum. %
## -------------------------------------------------
##     1 | 國家認同 | 168 |   100 |     100 |    100
##  <NA> |     <NA> |   0 |     0 |    <NA> |   <NA>
## 
## I3. 请问你认为哪一项是当前最重要的问题?(食品安全) (I3.11) <categorical> 
## # total N=891 valid N=891 mean=1.00 sd=0.00
## 
## Value |    Label |   N | Raw % | Valid % | Cum. %
## -------------------------------------------------
##     1 | 食品安全 | 891 |   100 |     100 |    100
##  <NA> |     <NA> |   0 |     0 |    <NA> |   <NA>
## 
## I3. 请问你认为哪一项是当前最重要的问题?(薪资所得) (I3.12) <categorical> 
## # total N=497 valid N=497 mean=1.00 sd=0.00
## 
## Value |    Label |   N | Raw % | Valid % | Cum. %
## -------------------------------------------------
##     1 | 薪資所得 | 497 |   100 |     100 |    100
##  <NA> |     <NA> |   0 |     0 |    <NA> |   <NA>
## 
## I3. 请问你认为哪一项是当前最重要的问题?(水土保持) (I3.13) <categorical> 
## # total N=71 valid N=71 mean=1.00 sd=0.00
## 
## Value |    Label |  N | Raw % | Valid % | Cum. %
## ------------------------------------------------
##     1 | 水土保持 | 71 |   100 |     100 |    100
##  <NA> |     <NA> |  0 |     0 |    <NA> |   <NA>
## 
## I3. 请问你认为哪一项是当前最重要的问题?(政党对立) (I3.14) <categorical> 
## # total N=374 valid N=374 mean=1.00 sd=0.00
## 
## Value |    Label |   N | Raw % | Valid % | Cum. %
## -------------------------------------------------
##     1 | 政黨對立 | 374 |   100 |     100 |    100
##  <NA> |     <NA> |   0 |     0 |    <NA> |   <NA>
## 
## I3. 请问你认为哪一项是当前最重要的问题?(其他) (I3.88) <categorical> 
## # total N=31 valid N=31 mean=1.00 sd=0.00
## 
## Value | Label |  N | Raw % | Valid % | Cum. %
## ---------------------------------------------
##     1 |  其他 | 31 |   100 |     100 |    100
##  <NA> |  <NA> |  0 |     0 |    <NA> |   <NA>

3.6.2.1 计算总反应次数r=5598

1192 + 319 + 650 + 225 + 381 + 197 + 236 + 272 + 94 + 168 + 891 + 497 + 71 + 374 + 31
## [1] 5598

3.6.3 全部样本数n=2002

3.6.4 制作数据框(data frame)

mydata <- data.frame(
  x1 = c(1192, 319, 650, 225, 381, 197, 236, 272,  94, 168, 891, 497, 71,  371,  31),
  n = c(2002,2002,2002,2002,2002,2002,2002,2002,2002,2002,2002,2002,2002,2002,2002),
  r = c(5598,5598,5598,5598,5598,5598,5598,5598,5598,5598,5598,5598,5598,5598,5598)
)

3.6.5 制作新变量

library(dplyr)
## 
## 载入程辑包:'dplyr'
## The following object is masked from 'package:sjlabelled':
## 
##     as_label
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union

3.6.6 以加权后样本个案数2002為计算基础的百分比

mydata1 <- mutate(mydata, percent.cases = (x1/n)*100)
mydata1
##      x1    n    r percent.cases
## 1  1192 2002 5598     59.540460
## 2   319 2002 5598     15.934066
## 3   650 2002 5598     32.467532
## 4   225 2002 5598     11.238761
## 5   381 2002 5598     19.030969
## 6   197 2002 5598      9.840160
## 7   236 2002 5598     11.788212
## 8   272 2002 5598     13.586414
## 9    94 2002 5598      4.695305
## 10  168 2002 5598      8.391608
## 11  891 2002 5598     44.505495
## 12  497 2002 5598     24.825175
## 13   71 2002 5598      3.546454
## 14  371 2002 5598     18.531469
## 15   31 2002 5598      1.548452

3.6.7 以加权反应次数5598為计算基础的百分比

mydata2 <- mutate(mydata, percent.responses = (x1/r)*100)
mydata2
##      x1    n    r percent.responses
## 1  1192 2002 5598        21.2933190
## 2   319 2002 5598         5.6984637
## 3   650 2002 5598        11.6112897
## 4   225 2002 5598         4.0192926
## 5   381 2002 5598         6.8060021
## 6   197 2002 5598         3.5191140
## 7   236 2002 5598         4.2157914
## 8   272 2002 5598         4.8588782
## 9    94 2002 5598         1.6791711
## 10  168 2002 5598         3.0010718
## 11  891 2002 5598        15.9163987
## 12  497 2002 5598         8.8781708
## 13   71 2002 5598         1.2683101
## 14  371 2002 5598         6.6273669
## 15   31 2002 5598         0.5537692

4 连续变量的描述统计

4.1 频数分布 sjmisc::frq(); sjmisc::frq(,weights=)

#"G4.2. 请问你一周会使用社交媒体几天?" 
frq(TCS2015sc$G4.2) #频数分布(原始未加权)
## G4.2. 请问你一周会使用社交媒体几天? (x) <numeric> 
## # total N=2002 valid N=1260 mean=6.02 sd=1.94
## 
## Value |   N | Raw % | Valid % | Cum. %
## --------------------------------------
##  0.50 |  23 |  1.15 |    1.83 |   1.83
##  1.00 |  50 |  2.50 |    3.97 |   5.79
##  1.50 |  12 |  0.60 |    0.95 |   6.75
##  2.00 |  56 |  2.80 |    4.44 |  11.19
##  2.50 |   8 |  0.40 |    0.63 |  11.83
##  3.00 |  47 |  2.35 |    3.73 |  15.56
##  3.50 |  11 |  0.55 |    0.87 |  16.43
##  4.00 |  16 |  0.80 |    1.27 |  17.70
##  4.50 |   4 |  0.20 |    0.32 |  18.02
##  5.00 |  46 |  2.30 |    3.65 |  21.67
##  5.50 |   4 |  0.20 |    0.32 |  21.98
##  6.00 |  13 |  0.65 |    1.03 |  23.02
##  6.50 |   5 |  0.25 |    0.40 |  23.41
##  7.00 | 965 | 48.20 |   76.59 | 100.00
##  <NA> | 742 | 37.06 |    <NA> |   <NA>
frq(TCS2015sc$G4.2, weights = TCS2015sc$weight1) #频数分布(加权后)
## G4.2. 请问你一周会使用社交媒体几天? (xw) <numeric> 
## # total N=1293 valid N=1293 mean=6.07 sd=1.91
## 
## Value |    N | Raw % | Valid % | Cum. %
## ---------------------------------------
##  0.50 |   23 |  1.78 |    1.78 |   1.78
##  1.00 |   47 |  3.63 |    3.63 |   5.41
##  1.50 |   12 |  0.93 |    0.93 |   6.34
##  2.00 |   56 |  4.33 |    4.33 |  10.67
##  2.50 |    8 |  0.62 |    0.62 |  11.29
##  3.00 |   45 |  3.48 |    3.48 |  14.77
##  3.50 |   11 |  0.85 |    0.85 |  15.62
##  4.00 |   16 |  1.24 |    1.24 |  16.86
##  4.50 |    3 |  0.23 |    0.23 |  17.09
##  5.00 |   46 |  3.56 |    3.56 |  20.65
##  5.50 |    5 |  0.39 |    0.39 |  21.04
##  6.00 |   12 |  0.93 |    0.93 |  21.96
##  6.50 |    5 |  0.39 |    0.39 |  22.35
##  7.00 | 1004 | 77.65 |   77.65 | 100.00
##  <NA> |    0 |  0.00 |    <NA> |   <NA>

4.2 中位数 base::median(, na.rm=TRUE); sjstats::weighted_median(, weights=)

median(TCS2015sc$G4.2,na.rm = TRUE)#中位数(原始未加权)
## [1] 7
library(sjstats)
weighted_median(TCS2015sc$G4.2, weights = TCS2015sc$weight1)#中位数(加权后)
## [1] 7

4.3 平均数 base::mean(, na.rm=TRUE); sjstats::weighted_mean(, weights=)

mean(TCS2015sc$G4.2,na.rm = TRUE) #平均数(原始未加权)
## [1] 6.024206
library(sjstats)
weighted_mean(TCS2015sc$G4.2, weights = TCS2015sc$weight1) #平均数(加权后)
## [1] 6.06746

4.4 标准差与方差 base::sd(, na.rm=TRUE); sjstats::weighted_sd(, weights=)

sd1 <- sd(TCS2015sc$G4.2,na.rm = TRUE)
sd1 #标准差(原始未加权)
## [1] 1.944425
sd1^2 #方差(原始未加权)
## [1] 3.780788
library(sjstats)
sd2 <- weighted_sd(TCS2015sc$G4.2, weights = TCS2015sc$weight1)
sd2 #标准差(加权后)
## [1] 1.908817
sd2^2 #方差(加权后)
## [1] 3.643583

4.5 全距与四分位距 sjmisc::descr(); sjmisc::descr(, weights=)

4.5.1 R stats

library(stats)
IQR(TCS2015sc$G4.2, na.rm = T)
## [1] 0

4.5.2 sjmisc

library(sjmisc)
descr(TCS2015sc, G4.2) #原始未加权
## 
## ## Basic descriptive statistics
## 
##   var    type                                label    n NA.prc mean   sd   se
##  G4.2 numeric G4.2. 请问你一周会使用社交媒体几天? 1260  37.06 6.02 1.94 0.05
##  md trimmed       range iqr  skew
##   7     6.5 6.5 (0.5-7)   0 -1.74
descr(TCS2015sc, G4.2, weights = TCS2015sc$weight1) #加权后
## 
## ## Basic descriptive statistics
## 
##   var    type                                label    n NA.prc mean   sd   se
##  G4.2 numeric G4.2. 请问你一周会使用社交媒体几天? 1295  37.06 6.07 1.91 0.05
##        range iqr  skew
##  6.5 (0.5-7)   0 -1.74

4.6 四分位数 RCPA3::wtd.quantile(); RCPA3::wtd.quantile(,w=)

#install.packages(“RCPA3”)

library(RCPA3)
#0%, 25%, 50%, 75%分位数 (原始未加权)
wtd.quantile(TCS2015sc$G4.2)
##  5% 10% 25% 50% 75% 90% 95% 
##   1   2   7   7   7   7   7
#0%, 25%, 50%, 75%分位数 (加权后)
wtd.quantile(TCS2015sc$G4.2, w= TCS2015sc$weight1)
##  5% 10% 25% 50% 75% 90% 95% 
##   1   2   7   7   7   7   7

4.7 自訂分位数 RCPA3::wtd.quantile(); RCPA3::wtd.quantile(,w=)

4.7.1 自訂分位数(原始未加权)

wtd.quantile(TCS2015sc$G4.2, 
             q=c(10, 20, 25, 30, 40, 50, 60, 70, 75, 80, 90))
## 10% 20% 25% 30% 40% 50% 60% 70% 75% 80% 90% 
##   2   5   7   7   7   7   7   7   7   7   7

4.7.2 自訂分位数(加权后)

wtd.quantile(TCS2015sc$G4.2, w = TCS2015sc$weight1,
             q=c(10, 20, 25, 30, 40, 50, 60, 70, 75, 80, 90))
## 10% 20% 25% 30% 40% 50% 60% 70% 75% 80% 90% 
##   2   5   7   7   7   7   7   7   7   7   7

4.8 直方图 sjPlot::plot_frq(, type=“histogram”);sjPlot::plot_frq(, type=“histogram”,weight.by=)

library(sjPlot)
### 直方图(原始未加权)
plot_frq(TCS2015sc$G4.2, type = "histogram", show.mean = T)

### 直方图(加权后)
plot_frq(TCS2015sc$G4.2, type = "histogram", show.mean = T, 
         weight.by = TCS2015sc$weight1)

4.9 直方图+正态曲线图 sjPlot::plot_frq(, type=“histogram”,normal.curve = TRUE);sjPlot::plot_frq(, type=“histogram”,normal.curve = TRUE,weight.by=)

library(sjPlot)
### 直方图+正态曲线图(原始未加权)
plot_frq(TCS2015sc$G4.2, type = "histogram", normal.curve = TRUE, show.mean = T)

#直方图+正态曲线图(加权后)
plot_frq(TCS2015sc$G4.2, type = "histogram",normal.curve = TRUE,  show.mean = T,
         weight.by = TCS2015sc$weight1)

4.10 直方图+密度图 sjPlot::plot_frq(, type=“density”);sjPlot::plot_frq(, type=“density”,weight.by=)

library(sjPlot)
#直方图+密度图(原始未加权)
plot_frq(TCS2015sc$G4.2, type = "density")
## Warning: `stat(density)` was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(density)` instead.
## ℹ The deprecated feature was likely used in the sjPlot package.
##   Please report the issue at <]8;;https://github.com/strengejacke/sjPlot/issueshttps://github.com/strengejacke/sjPlot/issues]8;;>.

#直方图+密度图(加权后)
plot_frq(TCS2015sc$G4.2, type = "density",weight.by = TCS2015sc$weight1)

4.11 折线图 sjPlot::plot_frq(, type=“line”);sjPlot::plot_frq(, type=“line”,weight.by=)

library(sjPlot)
#折线图(原始未加权)
plot_frq(TCS2015sc$G4.2, type = "line", show.values = FALSE)

#折线图(加权后)
plot_frq(TCS2015sc$G4.2, type = "line", show.values = FALSE, 
         weight.by = TCS2015sc$weight1)

4.12 箱型图 sjPlot::plot_frq(, type=“boxplot”); sjPlot::plot_frq(,type=“boxplot”,weight.by=)

library(sjPlot)
#"H4.5. 請你就下列媒體所報導新聞的整體的表現給一個分數-網路" 
#箱型图(原始未加权)
plot_frq(TCS2015sc$H4.5, type = "boxplot")
## Warning: The `fun.y` argument of `stat_summary()` is deprecated as of ggplot2 3.3.0.
## ℹ Please use the `fun` argument instead.
## ℹ The deprecated feature was likely used in the sjPlot package.
##   Please report the issue at <]8;;https://github.com/strengejacke/sjPlot/issueshttps://github.com/strengejacke/sjPlot/issues]8;;>.

#箱型图(加权后)
plot_frq(TCS2015sc$H4.5, type = "boxplot", weight.by = TCS2015sc$weight1)

4.13 小提琴图 sjPlot::plot_frq(,type=“violin”);sjPlot::plot_frq(,type=“violin”,weight.by=)

library(sjPlot)
#"H4.5. 請你就下列媒體所報導新聞的整體的表現給一個分數-網路" 
### 小提琴图(原始未加权)
plot_frq(TCS2015sc$H4.5, type = "violin")

### 箱型图(加权后)
plot_frq(TCS2015sc$H4.5, type = "violin", weight.by = TCS2015sc$weight1)

5 本章小结

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

套件 函数 说明
base pie() 绘制基本饼图
data.frame()  制作数据框
mean() 平均数    
median() 中位数         
sd() 方差              
stats IQR()    四分位距  
dplyr mutate() 制造新变量
sjmisc frq() 呈现频数分布表
find_var() 寻找特定变量   
decr() 描述统计(含四分位距)         
sjstats weighted_mean() 加权后平均数          
     weighted_median() 加权后中位数          
     weighted_sd() 加权后方差           
sjPlot plot_frq(,type=bar) 条形图         
plot_frq(,type=histogram) 直方图
plot_frq(,type=line) 折线图
plot_frq(,type=boxplot) 箱型图
plot_frq(,type=violin) 小提琴图