1 分析前的环境设置
1.1 下载安装套件包
本章学习者須先下载安装相關套件包,方能正常運行。
1.2 环境设置
我们通常会将R的工作环境先进行一些设置,这些设置包括了 “设定当前工作目录”、“设定系統中文文字编码”、以及“设定绘图物件中的中文文字”等项。
[1] "/Users/simonfair/Desktop/量化研究数据分析/R Ch4 数据档变量的编辑管理"
[1] "zh_CN.UTF-8/zh_CN.UTF-8/zh_CN.UTF-8/C/zh_CN.UTF-8/zh_CN.UTF-8"
2 读取SPSS数据档 sjlabelled::read_spss( )
使用 “sjlabelled”套件包的 read_spss( )函数, 将SPSS数据档(TCS2015small.sav)汇入到R。 使用 head( )函数,看一下汇进来数据档中的前6笔数据。 使用 save( )函数,將汇进来的数据档存成R格式数据档(*.rda)。 使用 load( )函数,將R格式数据档叫进记忆体。
Converting atomic to factors. Please wait...
ID A1 A2.year A2.age age_strata G1.1.A G4.2 G4.3.1 G4.3.2 V1.1
1 T111101006 2 1977 38 3 30 7 1 0 3
2 T111101016 2 1968 47 4 180 2 0 5 3
3 T111101039 2 1988 27 2 0 7 2 0 2
4 T111101040 1 1958 57 5 480 5 0 30 3
5 T111101042 2 1958 57 5 120 7 0 10 3
6 T111101047 1 1988 27 2 480 7 0 30 2
3 变量的测量水平
变量的测量水平 (measurement level) ,通常分为 “类别变量”(categorical variable) 与 “数字变量”(numeric variable) 两大类。 类别变量又可细分为 “定类变量”(nominal variable) 与 “定序变量”(ordinal variable); 数字变量又可细分为 “定距变量”(interval variable) 与 “定比变量”(ratio variable)。 不同测量水平的变量,其特征如下图所示:
4 查看变量的属性特征及变量(值)标签 attributes( )
使用 attributes( )函数,可以呈现类别变量的 “levels”(水平)、“class”(类别)、“labels”(变量值标签)、以及”label”(变量标签)。对于数字变量来说,则可以呈现”label”(变量标签)。
$levels
[1] "1" "2" "3" "4"
$class
[1] "factor"
$labels
非常不满意 不满意 满意 非常满意
1 2 3 4
$label
[1] "V1.1. 整体而言,你对于你的生活满不满意"
$label
[1] "年龄"
$format.spss
[1] "F17.0"
$display_width
[1] 19
5 转换变量的属性 sjlabelled::to_numeric( ); sjlabelled::to_factor()
使用 sjlabelled套件包的 to_numeric( )函数, 可以将一个”类别变量” (factor)转换为 “数字变量”(numeric); 使用 sjlabelled套件包 的 to_factor( )函数, 可以将一个”数字变量” (numeric)转换为 “类别变量”(factor)。
[1] "factor"
[1] "numeric"
[1] "factor"
也可使用R基本函数的 as.factor( ) 与 as.numeric( ) 函数, 进行变量属性的转换。
6 赋予变量标签及变量值标签
6.1 方法一:levels( ) (只设定变量值标签)
对于数据档的分析变量(例如:TCS2015small$A1),可以使用 levels( ) 函数,将每个变量值,都赋予名称(例如:A1=1:“男性”, A1=2:“女性” )。
6.2 方法二:sjlabelled::set_label( ); set_labels( ) (设置变量标签与变量值标签)
另外一个方法,是使用 sjlabelled套件包的set_label( )与 set_labels( )函数,可以同时设置分析变量的变量标签与变量值标签。
性别 (x) <categorical>
# total N=2002 valid N=2002 mean=1.54 sd=0.50
Value | Label | N | Raw % | Valid % | Cum. %
----------------------------------------------------
1 | male男性 | 928 | 46.35 | 46.35 | 46.35
2 | female女性 | 1074 | 53.65 | 53.65 | 100.00
<NA> | <NA> | 0 | 0.00 | <NA> | <NA>
7 重新命名变量的名称 sjmisc::rename_variables( )
使用 sjmisc套件包的rename_variables( )函数, 可以更改变量的名称。
ID A1 A2.year A2.age age_strata G1.1.A G4.2 G4.3.1 G4.3.2 V1.1
1 T111101006 2 1977 38 3 30 7 1 0 3
2 T111101016 2 1968 47 4 180 2 0 5 3
3 T111101039 2 1988 27 2 0 7 2 0 2
4 T111101040 1 1958 57 5 480 5 0 30 3
5 T111101042 2 1958 57 5 120 7 0 10 3
6 T111101047 1 1988 27 2 480 7 0 30 2
ID sex A2.year A2.age age_strata G1.1.A G4.2 G4.3.1 G4.3.2 V1.1
1 T111101006 2 1977 38 3 30 7 1 0 3
2 T111101016 2 1968 47 4 180 2 0 5 3
3 T111101039 2 1988 27 2 0 7 2 0 2
4 T111101040 1 1958 57 5 480 5 0 30 3
5 T111101042 2 1958 57 5 120 7 0 10 3
6 T111101047 1 1988 27 2 480 7 0 30 2
8 查找变量 sjmisc::find_var( )
可以使用 sjmisc套件包的 find_var( ) 函数, 寻找”变量名称” (var.name) 或 “变量标签”(var.label)中, 包含某个 特定名称 的变量。
col.nr var.name var.label
1 4 A2.age 年龄
2 5 age_strata 年龄分层
col.nr var.name var.label
1 4 A2.age 年龄
2 5 age_strata 年龄分层
col.nr var.name var.label
1 6 G1.1.A G1.1.A.你每天利用电脑上网工作、学习的时间有多久?
2 7 G4.2 G4.2. 请问你一周会使用社交媒体几天?
3 8 G4.3.1 G4.3. 请问在你有使用社交媒体的那一天,你大约会使用多久?(时)
4 9 G4.3.2 G4.3. 請问在你有使用社交媒体的那一天,你大约会使用多久?(分)
col.nr var.name var.label
1 7 G4.2 G4.2. 请问你一周会使用社交媒体几天?
2 8 G4.3.1 G4.3. 请问在你有使用社交媒体的那一天,你大约会使用多久?(时)
3 9 G4.3.2 G4.3. 請问在你有使用社交媒体的那一天,你大约会使用多久?(分)
V1.1. 整体而言,你对于你的生活满不满意 (V1.1) <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>
9 删除变量 sjmisc::remove_var( )
使用 sjmisc 套件包的 remove_var( )函数,可以删除特定变量。
ID A1 A2.year A2.age age_strata G1.1.A G4.2 G4.3.1 G4.3.2 V1.1
1 T111101006 2 1977 38 3 30 7 1 0 3
2 T111101016 2 1968 47 4 180 2 0 5 3
3 T111101039 2 1988 27 2 0 7 2 0 2
4 T111101040 1 1958 57 5 480 5 0 30 3
5 T111101042 2 1958 57 5 120 7 0 10 3
6 T111101047 1 1988 27 2 480 7 0 30 2
ID A1 A2.year A2.age G1.1.A G4.2 G4.3.1 G4.3.2 V1.1
1 T111101006 2 1977 38 30 7 1 0 3
2 T111101016 2 1968 47 180 2 0 5 3
3 T111101039 2 1988 27 0 7 2 0 2
4 T111101040 1 1958 57 480 5 0 30 3
5 T111101042 2 1958 57 120 7 0 10 3
6 T111101047 1 1988 27 480 7 0 30 2
10 挑选特定变量 dplyr::select( )
可以使用 dplyr 套件包的 select( ) 函数, 搭配 start_with( ), ends_with( ), 以及 contains( )三个参数,挑选符合特定条件的变量。
A1 age_strata
1 2 3
2 2 4
3 2 2
4 1 5
5 2 5
6 1 2
A1 A2.year A2.age age_strata
1 2 1977 38 3
2 2 1968 47 4
3 2 1988 27 2
4 1 1958 57 5
5 2 1958 57 5
6 1 1988 27 2
age_strata G1.1.A
1 3 30
2 4 180
3 2 0
4 5 480
5 5 120
6 2 480
A1 A2.year A2.age age_strata G1.1.A
1 2 1977 38 3 30
2 2 1968 47 4 180
3 2 1988 27 2 0
4 1 1958 57 5 480
5 2 1958 57 5 120
6 1 1988 27 2 480
11 移动变量的位置sjmisc::move_columns( )
可以使用 sjmisc* 套件包的 move_columns( )** 函数,搭配 .before参数, 将变量在数据档的位置,移动到某个变量之前。
11.1 sjmisc::move_columns(,.before)
将变量移动到某一个变量之前:
#把R数据档叫进来
load("TCS2015small.rda")
#加载"sjmisc"套件包
library(sjmisc)
#将数据档(TCS2015small)的V1.1变量,移动(move_columns)到G1.1.A变量之前并另存新档(TCS2015small.move )
TCS2015small.move <- move_columns(TCS2015small, V1.1,
.before = "G1.1.A")
#呈现数据档*TCS2015small.move)前面6个观察值,所有变量
head(TCS2015small.move) #V1.1变量已在G1.1.A变量之前
ID A1 A2.year A2.age age_strata V1.1 G1.1.A G4.2 G4.3.1 G4.3.2
1 T111101006 2 1977 38 3 3 30 7 1 0
2 T111101016 2 1968 47 4 3 180 2 0 5
3 T111101039 2 1988 27 2 2 0 7 2 0
4 T111101040 1 1958 57 5 3 480 5 0 30
5 T111101042 2 1958 57 5 3 120 7 0 10
6 T111101047 1 1988 27 2 2 480 7 0 30
11.2 sjmisc::move_columns(,.after)
可以使用 sjmisc 套件包的 move_columns( ) 函数,搭配 .after参数, 将变量在数据档的位置,移动到某个变量之后。
将变量移动到某一个变量之后:
#把R数据档叫进来
load("TCS2015small.rda")
#加载"sjmisc"套件包
library(sjmisc)
#将数据档(TCS2015small)的V1.1变量,移动(move_columns)到G1.1.A变量之后,并另存新档(TCS2015small.move)
TCS2015small.move <- move_columns(TCS2015small, V1.1,
.after = "G1.1.A")
#呈现数据档*TCS2015small.move)前面6个观察值,所有变量
head(TCS2015small.move) #V1.1变量已在G1.1.A变量之后
ID A1 A2.year A2.age age_strata G1.1.A V1.1 G4.2 G4.3.1 G4.3.2
1 T111101006 2 1977 38 3 30 3 7 1 0
2 T111101016 2 1968 47 4 180 3 2 0 5
3 T111101039 2 1988 27 2 0 2 7 2 0
4 T111101040 1 1958 57 5 480 3 5 0 30
5 T111101042 2 1958 57 5 120 3 7 0 10
6 T111101047 1 1988 27 2 480 2 7 0 30
12 将变量值重新编码(重要:常用)
12.1 重新编码 sjmisc::rec( )与检查编码的正确性 sjmisc::flat_table( )
可以使用 sjmisc 套件包的 rec( )函数, 将原始变量重新编码为另一新的变量。 并可搭配参数 var.label= ” “ 赋予变量标签; 参数 val.labels= ” “ 赋予变量值标签。
年龄 (x) <numeric>
# total N=2002 valid N=2002 mean=47.35 sd=15.99
Value | N | Raw % | Valid % | Cum. %
-------------------------------------
18 | 14 | 0.70 | 0.70 | 0.70
19 | 24 | 1.20 | 1.20 | 1.90
20 | 22 | 1.10 | 1.10 | 3.00
21 | 24 | 1.20 | 1.20 | 4.20
22 | 21 | 1.05 | 1.05 | 5.24
23 | 26 | 1.30 | 1.30 | 6.54
24 | 28 | 1.40 | 1.40 | 7.94
25 | 24 | 1.20 | 1.20 | 9.14
26 | 29 | 1.45 | 1.45 | 10.59
27 | 25 | 1.25 | 1.25 | 11.84
28 | 23 | 1.15 | 1.15 | 12.99
29 | 20 | 1.00 | 1.00 | 13.99
30 | 28 | 1.40 | 1.40 | 15.38
31 | 36 | 1.80 | 1.80 | 17.18
32 | 45 | 2.25 | 2.25 | 19.43
33 | 36 | 1.80 | 1.80 | 21.23
34 | 54 | 2.70 | 2.70 | 23.93
35 | 42 | 2.10 | 2.10 | 26.02
36 | 50 | 2.50 | 2.50 | 28.52
37 | 58 | 2.90 | 2.90 | 31.42
38 | 57 | 2.85 | 2.85 | 34.27
39 | 54 | 2.70 | 2.70 | 36.96
40 | 36 | 1.80 | 1.80 | 38.76
41 | 41 | 2.05 | 2.05 | 40.81
42 | 30 | 1.50 | 1.50 | 42.31
43 | 40 | 2.00 | 2.00 | 44.31
44 | 32 | 1.60 | 1.60 | 45.90
45 | 38 | 1.90 | 1.90 | 47.80
46 | 29 | 1.45 | 1.45 | 49.25
47 | 38 | 1.90 | 1.90 | 51.15
48 | 35 | 1.75 | 1.75 | 52.90
49 | 44 | 2.20 | 2.20 | 55.09
50 | 38 | 1.90 | 1.90 | 56.99
51 | 42 | 2.10 | 2.10 | 59.09
52 | 33 | 1.65 | 1.65 | 60.74
53 | 48 | 2.40 | 2.40 | 63.14
54 | 43 | 2.15 | 2.15 | 65.28
55 | 37 | 1.85 | 1.85 | 67.13
56 | 36 | 1.80 | 1.80 | 68.93
57 | 54 | 2.70 | 2.70 | 71.63
58 | 52 | 2.60 | 2.60 | 74.23
59 | 40 | 2.00 | 2.00 | 76.22
60 | 32 | 1.60 | 1.60 | 77.82
61 | 52 | 2.60 | 2.60 | 80.42
62 | 37 | 1.85 | 1.85 | 82.27
63 | 34 | 1.70 | 1.70 | 83.97
64 | 34 | 1.70 | 1.70 | 85.66
65 | 27 | 1.35 | 1.35 | 87.01
66 | 26 | 1.30 | 1.30 | 88.31
67 | 20 | 1.00 | 1.00 | 89.31
68 | 22 | 1.10 | 1.10 | 90.41
69 | 10 | 0.50 | 0.50 | 90.91
70 | 11 | 0.55 | 0.55 | 91.46
71 | 12 | 0.60 | 0.60 | 92.06
72 | 17 | 0.85 | 0.85 | 92.91
73 | 15 | 0.75 | 0.75 | 93.66
74 | 21 | 1.05 | 1.05 | 94.71
75 | 9 | 0.45 | 0.45 | 95.15
76 | 11 | 0.55 | 0.55 | 95.70
77 | 13 | 0.65 | 0.65 | 96.35
78 | 10 | 0.50 | 0.50 | 96.85
79 | 9 | 0.45 | 0.45 | 97.30
80 | 11 | 0.55 | 0.55 | 97.85
81 | 6 | 0.30 | 0.30 | 98.15
82 | 7 | 0.35 | 0.35 | 98.50
83 | 6 | 0.30 | 0.30 | 98.80
84 | 1 | 0.05 | 0.05 | 98.85
85 | 7 | 0.35 | 0.35 | 99.20
86 | 6 | 0.30 | 0.30 | 99.50
88 | 2 | 0.10 | 0.10 | 99.60
89 | 2 | 0.10 | 0.10 | 99.70
90 | 2 | 0.10 | 0.10 | 99.80
91 | 1 | 0.05 | 0.05 | 99.85
92 | 1 | 0.05 | 0.05 | 99.90
93 | 1 | 0.05 | 0.05 | 99.95
96 | 1 | 0.05 | 0.05 | 100.00
<NA> | 0 | 0.00 | <NA> | <NA>
#重新编码(sjmisc::rec)
#将原始变量(A2.age)依照我们的编码规则(18:29=1; 30:39=2; 40:49=3; 50:59=4; 60:max=5),重新编码(rec)为另一新的变量(A2.age.cat5),并给予变量名称(var.label)和变量标签名称(val.labels)。
#将新的变量(A2.age.cat5)设置为类别变量(as.num=FALSE)
TCS2015small$A2.age.cat5 <- rec(TCS2015small$A2.age,
rec = "18:29=1;
30:39=2;
40:49=3;
50:59=4;
60:max=5" ,
var.label = "年龄五分类",
val.labels = c("18-29岁",
"30-39岁",
"40-49岁",
"50-59岁",
"60岁及以上"),
as.num = FALSE #设置为类别变量
)
#做新变量(A2.age.cat5)的频数分布
frq(TCS2015small$A2.age.cat5)
年龄五分类 (x) <categorical>
# total N=2002 valid N=2002 mean=3.18 sd=1.39
Value | Label | N | Raw % | Valid % | Cum. %
---------------------------------------------------
1 | 18-29岁 | 280 | 13.99 | 13.99 | 13.99
2 | 30-39岁 | 460 | 22.98 | 22.98 | 36.96
3 | 40-49岁 | 363 | 18.13 | 18.13 | 55.09
4 | 50-59岁 | 423 | 21.13 | 21.13 | 76.22
5 | 60岁及以上 | 476 | 23.78 | 23.78 | 100.00
<NA> | <NA> | 0 | 0.00 | <NA> | <NA>
可以使用 sjmisc 套件包的 flat_table( ) 函数, 检查重新编码的正确性。
A2.age.cat5 18-29岁 30-39岁 40-49岁 50-59岁 60岁及以上
A2.age
18 14 0 0 0 0
19 24 0 0 0 0
20 22 0 0 0 0
21 24 0 0 0 0
22 21 0 0 0 0
23 26 0 0 0 0
24 28 0 0 0 0
25 24 0 0 0 0
26 29 0 0 0 0
27 25 0 0 0 0
28 23 0 0 0 0
29 20 0 0 0 0
30 0 28 0 0 0
31 0 36 0 0 0
32 0 45 0 0 0
33 0 36 0 0 0
34 0 54 0 0 0
35 0 42 0 0 0
36 0 50 0 0 0
37 0 58 0 0 0
38 0 57 0 0 0
39 0 54 0 0 0
40 0 0 36 0 0
41 0 0 41 0 0
42 0 0 30 0 0
43 0 0 40 0 0
44 0 0 32 0 0
45 0 0 38 0 0
46 0 0 29 0 0
47 0 0 38 0 0
48 0 0 35 0 0
49 0 0 44 0 0
50 0 0 0 38 0
51 0 0 0 42 0
52 0 0 0 33 0
53 0 0 0 48 0
54 0 0 0 43 0
55 0 0 0 37 0
56 0 0 0 36 0
57 0 0 0 54 0
58 0 0 0 52 0
59 0 0 0 40 0
60 0 0 0 0 32
61 0 0 0 0 52
62 0 0 0 0 37
63 0 0 0 0 34
64 0 0 0 0 34
65 0 0 0 0 27
66 0 0 0 0 26
67 0 0 0 0 20
68 0 0 0 0 22
69 0 0 0 0 10
70 0 0 0 0 11
71 0 0 0 0 12
72 0 0 0 0 17
73 0 0 0 0 15
74 0 0 0 0 21
75 0 0 0 0 9
76 0 0 0 0 11
77 0 0 0 0 13
78 0 0 0 0 10
79 0 0 0 0 9
80 0 0 0 0 11
81 0 0 0 0 6
82 0 0 0 0 7
83 0 0 0 0 6
84 0 0 0 0 1
85 0 0 0 0 7
86 0 0 0 0 6
88 0 0 0 0 2
89 0 0 0 0 2
90 0 0 0 0 2
91 0 0 0 0 1
92 0 0 0 0 1
93 0 0 0 0 1
96 0 0 0 0 1
12.2 将连续变量分割成数目约略相等的组别 sjmisc::split_var( )
可以使用 sjmisc 套件包的 split_var( )函数, 将一个”连续变量” (例如:TCS2015small\(A2.age), 分割成数目约略相等的组别(例如:5组),并另存为一个新的变量(例如:TCS2015small\)A2.age.group5)。
年龄 (x) <categorical>
# total N=2002 valid N=2002 mean=3.05 sd=1.43
Value | N | Raw % | Valid % | Cum. %
--------------------------------------
1 | 389 | 19.43 | 19.43 | 19.43
2 | 387 | 19.33 | 19.33 | 38.76
3 | 407 | 20.33 | 20.33 | 59.09
4 | 375 | 18.73 | 18.73 | 77.82
5 | 444 | 22.18 | 22.18 | 100.00
<NA> | 0 | 0.00 | <NA> | <NA>
12.3 将连续变量进行二分编码 sjmisc::dicho( )
可以使用 sjmisc 套件包的 dicho( )函数, 将一个”连续变量” (例如:TCS2015small\(A2.age), 依据某个切点(例如:39岁),进行二分编码(例如:18-39岁与40岁及以上),并另存为一个新的变量(例如:TCS2015small\)A2.age.dicho)。
#把R数据档叫进来
load("TCS2015small.rda")
#加载 "sjmisc"套件包
library(sjmisc)
#将TCS2015small$A2.age变量,根据A2.age=40分为两组
#一组为18-39岁,另一组为40岁及以上
#分别设置变量标签(var.label),与变量值标签(val.labels)
#将二分编码后的变量,重新设置为新的变量名称(A2.age.dicho)
TCS2015small$A2.age.dicho <- dicho(TCS2015small$A2.age,
dich.by = 39,
var.label = "年龄二分类",
val.labels = c("18-39岁", "40岁及以上"),
append = FALSE)
#二分编码后的频数分布
frq(TCS2015small$A2.age.dicho )
年龄二分类 (x) <categorical>
# total N=2002 valid N=2002 mean=0.63 sd=0.48
Value | Label | N | Raw % | Valid % | Cum. %
----------------------------------------------------
0 | 18-39岁 | 740 | 36.96 | 36.96 | 36.96
1 | 40岁及以上 | 1262 | 63.04 | 63.04 | 100.00
<NA> | <NA> | 0 | 0.00 | <NA> | <NA>
13 创建新变量 dplyr::mutate();sjmisc::add_variables()(重要:常用)
13.1 方法一 dplyr::mutate( )
可以使用 dplyr套件包的 mutate( )函数, 依据特定运算规则,创建新变量。
#把R数据档叫进来
load("TCS2015small.rda")
#加载"dplyr"套件
library(dplyr)
#新增一个变量(smuse2_min_day)其值为根据某种特定运算规则而得(G4.3.1*60 + G4.3.2),并将新建变量(smuse2_min_day)另存到新的数据档(TCS2015sample.mutate)
TCS2015small.mutate <- mutate(TCS2015small, smuse2_min_day = G4.3.1*60 + G4.3.2)
#呈现数据档(TCS2015small.mutate)前面6个观察值,所有变量
head(TCS2015small.mutate)
ID A1 A2.year A2.age age_strata G1.1.A G4.2 G4.3.1 G4.3.2 V1.1
1 T111101006 2 1977 38 3 30 7 1 0 3
2 T111101016 2 1968 47 4 180 2 0 5 3
3 T111101039 2 1988 27 2 0 7 2 0 2
4 T111101040 1 1958 57 5 480 5 0 30 3
5 T111101042 2 1958 57 5 120 7 0 10 3
6 T111101047 1 1988 27 2 480 7 0 30 2
smuse2_min_day
1 60
2 5
3 120
4 30
5 10
6 30
13.2 方法二 sjmisc::add_variables( )
也可以使用 sjmisc 套件包的 add_variables( )函数, 依据特定运算规则,创建新变量。
ID A1 A2.year A2.age age_strata G1.1.A G4.2 G4.3.1 G4.3.2 V1.1
1 T111101006 2 1977 38 3 30 7 1 0 3
2 T111101016 2 1968 47 4 180 2 0 5 3
3 T111101039 2 1988 27 2 0 7 2 0 2
4 T111101040 1 1958 57 5 480 5 0 30 3
5 T111101042 2 1958 57 5 120 7 0 10 3
6 T111101047 1 1988 27 2 480 7 0 30 2
new_var1
1 3
2 3
3 3
4 3
5 3
6 3
ID A1 A2.year A2.age age_strata G1.1.A G4.2 G4.3.1 G4.3.2 new_var2
1 T111101006 2 1977 38 3 30 7 1 0 4
2 T111101016 2 1968 47 4 180 2 0 5 4
3 T111101039 2 1988 27 2 0 7 2 0 4
4 T111101040 1 1958 57 5 480 5 0 30 4
5 T111101042 2 1958 57 5 120 7 0 10 4
6 T111101047 1 1988 27 2 480 7 0 30 4
V1.1
1 3
2 3
3 2
4 3
5 3
6 2
14 增加id变量 sjmisc::add_id( )(常用:重要)
可以使用 sjmisc 套件包的 add_id( )函数, 创建观察值的id变量。
ID_user ID A1 A2.year A2.age age_strata G1.1.A G4.2 G4.3.1 G4.3.2
1 1 T111101006 2 1977 38 3 30 7 1 0
2 2 T111101016 2 1968 47 4 180 2 0 5
3 3 T111101039 2 1988 27 2 0 7 2 0
4 4 T111101040 1 1958 57 5 480 5 0 30
5 5 T111101042 2 1958 57 5 120 7 0 10
6 6 T111101047 1 1988 27 2 480 7 0 30
15 制造虚拟变量 sjmisc::to_dummy( )(常用:重要)
可以使用 sjmisc套件包的 to_dummy( ) 函数, 根据某一类别变量的”类别数目”,创建出相对应的”虚拟变量数目”。 这点在做类别变量回归分析时,特别有用。
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>
dummy_1 dummy_2 dummy_3 dummy_4
1 0 0 1 0
2 0 0 1 0
3 0 1 0 0
4 0 0 1 0
5 0 0 1 0
6 0 1 0 0
ID A1 A2.year A2.age age_strata G1.1.A G4.2 G4.3.1 G4.3.2 V1.1
1 T111101006 2 1977 38 3 30 7 1 0 3
2 T111101016 2 1968 47 4 180 2 0 5 3
3 T111101039 2 1988 27 2 0 7 2 0 2
4 T111101040 1 1958 57 5 480 5 0 30 3
5 T111101042 2 1958 57 5 120 7 0 10 3
6 T111101047 1 1988 27 2 480 7 0 30 2
dummy_1 dummy_2 dummy_3 dummy_4
1 0 0 1 0
2 0 0 1 0
3 0 1 0 0
4 0 0 1 0
5 0 0 1 0
6 0 1 0 0
16 将变量值 标准化 与 中心化 sjmisc::std( );center( )
有时为了处理数据的需要,我们必须将数据予以 标准化。 Z值标准化是常用的一种方式(将原始数据减去其平均数,再除以其标准差,使其转换为均值为0,标准差为1的分布)。要进行 Z值标准,可使用 sjmisc套件包的 std( )函数,进行标准化的转换。
另外,有时也必须将数据中心化(将原始数据减去其平均数,使得新的数据的平均值为0),此时可使用 sjmisc 套件包的 center( ) 函数,进行中心化的转换。
[1] -0.58443868 -0.02164588 -1.27229655 0.60367946 0.60367946 -1.27229655
[1] -9.3461538 -0.3461538 -20.3461538 9.6538462 9.6538462 -20.3461538
TCS2015small.A2.age TCS2015small.A2.age.z TCS2015small.A2.age.c
1 38 -0.58443868 -9.3461538
2 47 -0.02164588 -0.3461538
3 27 -1.27229655 -20.3461538
4 57 0.60367946 9.6538462
5 57 0.60367946 9.6538462
6 27 -1.27229655 -20.3461538
17 设定缺失值 sjmisc::set_na( ); 取代缺失值 sjmisc::replace_na( )
可以使用 sjmisc套件包的 set_na( )函数,将特定数值设置为缺失值; 也可使用 sjmisc套件包的 replace_na( )函数,将缺失值以某一数值代入。
G1.1.A.你每天利用电脑上网工作、学习的时间有多久? (x) <numeric>
# total N=2002 valid N=1443 mean=146.76 sd=184.35
Value | N | Raw % | Valid % | Cum. %
--------------------------------------
0 | 593 | 29.62 | 41.09 | 41.09
10 | 7 | 0.35 | 0.49 | 41.58
15 | 2 | 0.10 | 0.14 | 41.72
20 | 8 | 0.40 | 0.55 | 42.27
23 | 1 | 0.05 | 0.07 | 42.34
25 | 1 | 0.05 | 0.07 | 42.41
27 | 1 | 0.05 | 0.07 | 42.48
30 | 49 | 2.45 | 3.40 | 45.88
35 | 1 | 0.05 | 0.07 | 45.95
45 | 2 | 0.10 | 0.14 | 46.08
50 | 1 | 0.05 | 0.07 | 46.15
60 | 126 | 6.29 | 8.73 | 54.89
62 | 1 | 0.05 | 0.07 | 54.95
90 | 16 | 0.80 | 1.11 | 56.06
120 | 122 | 6.09 | 8.45 | 64.52
150 | 7 | 0.35 | 0.49 | 65.00
180 | 63 | 3.15 | 4.37 | 69.37
210 | 7 | 0.35 | 0.49 | 69.85
240 | 101 | 5.04 | 7.00 | 76.85
270 | 3 | 0.15 | 0.21 | 77.06
300 | 64 | 3.20 | 4.44 | 81.50
330 | 3 | 0.15 | 0.21 | 81.70
360 | 47 | 2.35 | 3.26 | 84.96
390 | 3 | 0.15 | 0.21 | 85.17
420 | 22 | 1.10 | 1.52 | 86.69
450 | 2 | 0.10 | 0.14 | 86.83
480 | 127 | 6.34 | 8.80 | 95.63
540 | 26 | 1.30 | 1.80 | 97.44
600 | 24 | 1.20 | 1.66 | 99.10
720 | 13 | 0.65 | 0.90 | 100.00
<NA> | 559 | 27.92 | <NA> | <NA>
17.1 设定缺失值 sjmisc::set_na( )
G1.1.A.你每天利用电脑上网工作、学习的时间有多久? (x) <numeric>
# total N=2002 valid N=850 mean=249.14 sd=179.40
Value | N | Raw % | Valid % | Cum. %
---------------------------------------
10 | 7 | 0.35 | 0.82 | 0.82
15 | 2 | 0.10 | 0.24 | 1.06
20 | 8 | 0.40 | 0.94 | 2.00
23 | 1 | 0.05 | 0.12 | 2.12
25 | 1 | 0.05 | 0.12 | 2.24
27 | 1 | 0.05 | 0.12 | 2.35
30 | 49 | 2.45 | 5.76 | 8.12
35 | 1 | 0.05 | 0.12 | 8.24
45 | 2 | 0.10 | 0.24 | 8.47
50 | 1 | 0.05 | 0.12 | 8.59
60 | 126 | 6.29 | 14.82 | 23.41
62 | 1 | 0.05 | 0.12 | 23.53
90 | 16 | 0.80 | 1.88 | 25.41
120 | 122 | 6.09 | 14.35 | 39.76
150 | 7 | 0.35 | 0.82 | 40.59
180 | 63 | 3.15 | 7.41 | 48.00
210 | 7 | 0.35 | 0.82 | 48.82
240 | 101 | 5.04 | 11.88 | 60.71
270 | 3 | 0.15 | 0.35 | 61.06
300 | 64 | 3.20 | 7.53 | 68.59
330 | 3 | 0.15 | 0.35 | 68.94
360 | 47 | 2.35 | 5.53 | 74.47
390 | 3 | 0.15 | 0.35 | 74.82
420 | 22 | 1.10 | 2.59 | 77.41
450 | 2 | 0.10 | 0.24 | 77.65
480 | 127 | 6.34 | 14.94 | 92.59
540 | 26 | 1.30 | 3.06 | 95.65
600 | 24 | 1.20 | 2.82 | 98.47
720 | 13 | 0.65 | 1.53 | 100.00
<NA> | 1152 | 57.54 | <NA> | <NA>
17.2 取代缺失值 sjmisc::replace_na( )
G1.1.A.你每天利用电脑上网工作、学习的时间有多久? (x) <numeric>
# total N=2002 valid N=2002 mean=275.14 sd=118.98
Value | N | Raw % | Valid % | Cum. %
----------------------------------------
10.00 | 7 | 0.35 | 0.35 | 0.35
15.00 | 2 | 0.10 | 0.10 | 0.45
20.00 | 8 | 0.40 | 0.40 | 0.85
23.00 | 1 | 0.05 | 0.05 | 0.90
25.00 | 1 | 0.05 | 0.05 | 0.95
27.00 | 1 | 0.05 | 0.05 | 1.00
30.00 | 49 | 2.45 | 2.45 | 3.45
35.00 | 1 | 0.05 | 0.05 | 3.50
45.00 | 2 | 0.10 | 0.10 | 3.60
50.00 | 1 | 0.05 | 0.05 | 3.65
60.00 | 126 | 6.29 | 6.29 | 9.94
62.00 | 1 | 0.05 | 0.05 | 9.99
90.00 | 16 | 0.80 | 0.80 | 10.79
120.00 | 122 | 6.09 | 6.09 | 16.88
150.00 | 7 | 0.35 | 0.35 | 17.23
180.00 | 63 | 3.15 | 3.15 | 20.38
210.00 | 7 | 0.35 | 0.35 | 20.73
240.00 | 101 | 5.04 | 5.04 | 25.77
270.00 | 3 | 0.15 | 0.15 | 25.92
294.33 | 1152 | 57.54 | 57.54 | 83.47
300.00 | 64 | 3.20 | 3.20 | 86.66
330.00 | 3 | 0.15 | 0.15 | 86.81
360.00 | 47 | 2.35 | 2.35 | 89.16
390.00 | 3 | 0.15 | 0.15 | 89.31
420.00 | 22 | 1.10 | 1.10 | 90.41
450.00 | 2 | 0.10 | 0.10 | 90.51
480.00 | 127 | 6.34 | 6.34 | 96.85
540.00 | 26 | 1.30 | 1.30 | 98.15
600.00 | 24 | 1.20 | 1.20 | 99.35
720.00 | 13 | 0.65 | 0.65 | 100.00
<NA> | 0 | 0.00 | <NA> | <NA>
18 计算次数 sjmisc::row_count( )
可以使用 sjmisc 套件包的 row_count( )函数, 计算特定观察值(例如:value=1)在不同变量(例如:A1.rec,age.strata.rec)出现的次数。
性别 (x) <categorical>
# total N=2002 valid N=2002 mean=1.54 sd=0.50
Value | Label | N | Raw % | Valid % | Cum. %
-----------------------------------------------
1 | 男 | 928 | 46.35 | 46.35 | 46.35
2 | 女 | 1074 | 53.65 | 53.65 | 100.00
<NA> | <NA> | 0 | 0.00 | <NA> | <NA>
性别 (x) <categorical>
# total N=2002 valid N=2002 mean=0.46 sd=0.50
Value | Label | N | Raw % | Valid % | Cum. %
------------------------------------------------
0 | 0:女性 | 1074 | 53.65 | 53.65 | 53.65
1 | 1:男性 | 928 | 46.35 | 46.35 | 100.00
<NA> | <NA> | 0 | 0.00 | <NA> | <NA>
年龄分层 (x) <categorical>
# total N=2002 valid N=2002 mean=4.25 sd=1.56
Value | Label | N | Raw % | Valid % | Cum. %
-----------------------------------------------
1 | 18-19 | 38 | 1.90 | 1.90 | 1.90
2 | 20-29 | 242 | 12.09 | 12.09 | 13.99
3 | 30-39 | 460 | 22.98 | 22.98 | 36.96
4 | 40-49 | 363 | 18.13 | 18.13 | 55.09
5 | 50-59 | 423 | 21.13 | 21.13 | 76.22
6 | 60-69 | 294 | 14.69 | 14.69 | 90.91
7 | 70以上 | 182 | 9.09 | 9.09 | 100.00
<NA> | <NA> | 0 | 0.00 | <NA> | <NA>
年龄二分类 (x) <categorical>
# total N=2002 valid N=2002 mean=0.63 sd=0.48
Value | Label | N | Raw % | Valid % | Cum. %
------------------------------------------------------
0 | 0:18-39 | 740 | 36.96 | 36.96 | 36.96
1 | 1:40(含)以上 | 1262 | 63.04 | 63.04 | 100.00
<NA> | <NA> | 0 | 0.00 | <NA> | <NA>
性别 (x) <categorical>
# total N=2002 valid N=2002 mean=0.46 sd=0.50
Value | Label | N | Raw % | Valid % | Cum. %
------------------------------------------------
0 | 0:女性 | 1074 | 53.65 | 53.65 | 53.65
1 | 1:男性 | 928 | 46.35 | 46.35 | 100.00
<NA> | <NA> | 0 | 0.00 | <NA> | <NA>
#多变量多重取值的次数计算
#将TCS2015small数据档中的A1.rec变量与age.strata.rec两变量,挑出来(select)
#计算两变量中出现 "1"(count=1)的次数(rowcount)
#(A1.rec=1,男性;age.strata.rec=1,40含以上),
#计算结果另存新档(TCS2015small_count)
library(sjmisc)
TCS2015small_count <- TCS2015small %>% #选择分析数据档
select(A1.rec, age.strata.rec) %>% #挑选分析变量
row_count(count = 1, append = TRUE) #计算分析变量出现1的次数
#呈现数据档(TCS2015sample_count)前面6个观察值,所有变量
head(TCS2015small_count)
A1.rec age.strata.rec rowcount
1 0 0 0
2 0 1 1
3 0 0 0
4 1 1 2
5 0 1 1
6 1 0 1
x <integer>
# total N=2002 valid N=2002 mean=1.09 sd=0.67
Value | N | Raw % | Valid % | Cum. %
---------------------------------------
0 | 369 | 18.43 | 18.43 | 18.43
1 | 1076 | 53.75 | 53.75 | 72.18
2 | 557 | 27.82 | 27.82 | 100.00
<NA> | 0 | 0.00 | <NA> | <NA>
19 排名 dplyr::min_rank( );dplyr::percent_rank( )
19.1 数据预备
ID A2.age
1 T111101006 38
2 T111101016 47
3 T111101039 27
4 T111101040 57
5 T111101042 57
6 T111101047 27
ID A2.age
1 T231238135 96
2 T221232008 93
3 T521169043 92
4 T132222154 91
5 T231137089 90
6 T611177074 90
可以使用 dplyr套件包的 min_rank( ) 做数据大小排名。 也可以使用 dplyr套件包的 percent_rank( ) 做百分位排名。
19.2 dplyr::min_rank(desc( )) 数据大小排名方法一
数值愈大,排名愈前; 数值愈小,排名愈后, 一般用这个方法进行排名。
ID A2.age rank1
1 T231238135 96 1
2 T221232008 93 2
3 T521169043 92 3
4 T132222154 91 4
5 T231137089 90 5
6 T611177074 90 5
ID A2.age rank1
1997 T411153063 18 1989
1998 T412256104 18 1989
1999 T511266016 18 1989
2000 T511266232 18 1989
2001 T522272051 18 1989
2002 T611177057 18 1989
19.3 dplyr::min_rank( ) 数据大小排名方法二
数值愈大,排名愈后; 数值愈小,排名愈前。
ID A2.age rank2
1 T231238135 96 2002
2 T221232008 93 2001
3 T521169043 92 2000
4 T132222154 91 1999
5 T231137089 90 1997
6 T611177074 90 1997
19.4 dplyr::percent_rank(desc( )) 百分位排名方法一
数值愈大,百分位位次排名愈靠前, 数值愈小,百分位位次排名愈靠后 一般用这个方法进行排名
ID A2.age rank1.pct
1 T231238135 96 0.0000000000
2 T221232008 93 0.0004997501
3 T521169043 92 0.0009995002
4 T132222154 91 0.0014992504
5 T231137089 90 0.0019990005
6 T611177074 90 0.0019990005
ID A2.age rank1.pct
1997 T411153063 18 0.9935032
1998 T412256104 18 0.9935032
1999 T511266016 18 0.9935032
2000 T511266232 18 0.9935032
2001 T522272051 18 0.9935032
2002 T611177057 18 0.9935032
19.5 dplyr::percent_rank( ) 百分位排名方法二
数值愈大,百分位位次排名愈靠后; 数值愈小,百分位位次排名愈靠前。
A2.age rank2.pct
1 96 1.0000000
2 93 0.9995002
3 92 0.9990005
4 91 0.9985007
5 90 0.9975012
6 90 0.9975012
A2.age rank2.pct
1997 18 0
1998 18 0
1999 18 0
2000 18 0
2001 18 0
2002 18 0
19.6 不同排名方法的比较
ID A2.age rank1 rank2 rank1.pct rank2.pct
1 T231238135 96 1 2002 0.0000000000 1.0000000
2 T221232008 93 2 2001 0.0004997501 0.9995002
3 T521169043 92 3 2000 0.0009995002 0.9990005
4 T132222154 91 4 1999 0.0014992504 0.9985007
5 T231137089 90 5 1997 0.0019990005 0.9975012
6 T611177074 90 5 1997 0.0019990005 0.9975012
20 分组汇总 dplyr::group_by( ) (重要:常用)
20.1 分组汇总 + 频数分布 dplyr::group_by( ) + sjmisc::frq( )
使用 dplyr 套件包的 group_by( )函数 + sjmisc套件包的 frq( )函数, 可以呈现分组汇总的频数分布。
#载入R数据档
load("TCS2015small.rda")
#根据性别分层,呈现不同性别对于目前生活满不满意的频数分布
#加载"dplyr" 与 "sjmisc"套件
library(dplyr)
library(sjmisc)
#呈现变量(V1.1)的分组频数分布(frq)
#将结果另存新变量(sex_V1.1_frq)
sex_V1.1_frq <- TCS2015small %>% #使用数据TCS2015small
group_by(A1) %>% #根据A1变量(性别)进行分组(1:男性;2:女性)
frq(V1.1) #计算变量(V1.1)的频数分布
#呈现分组频数分布结果
print(sex_V1.1_frq)
V1.1. 整体而言,你对于你的生活满不满意 (V1.1) <categorical>
# grouped by: 男
# total N=928 valid N=928 mean=2.71 sd=0.59
Value | Label | N | Raw % | Valid % | Cum. %
---------------------------------------------------
1 | 非常不满意 | 37 | 3.99 | 3.99 | 3.99
2 | 不满意 | 222 | 23.92 | 23.92 | 27.91
3 | 满意 | 640 | 68.97 | 68.97 | 96.88
4 | 非常满意 | 29 | 3.12 | 3.12 | 100.00
<NA> | <NA> | 0 | 0.00 | <NA> | <NA>
V1.1. 整体而言,你对于你的生活满不满意 (V1.1) <categorical>
# grouped by: 女
# total N=1074 valid N=1074 mean=2.84 sd=0.55
Value | Label | N | Raw % | Valid % | Cum. %
---------------------------------------------------
1 | 非常不满意 | 19 | 1.77 | 1.77 | 1.77
2 | 不满意 | 207 | 19.27 | 19.27 | 21.04
3 | 满意 | 780 | 72.63 | 72.63 | 93.67
4 | 非常满意 | 68 | 6.33 | 6.33 | 100.00
<NA> | <NA> | 0 | 0.00 | <NA> | <NA>
20.2 分组汇总+平均数 dplyr::group_by( ) + dplyr::summarise( )(重要:常用)
使用 dplyr 套件包的 group_by( )函数 + dplyr 套件包的 summarise( )函数,可以呈现分组汇总的平均数。
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>
#呈现变量(G4.2)的平均数(summarise(mean))
#将结果另存新变量(age_strata_mean )
#加载"dplyr"套件包
library(dplyr)
age_strata_mean <- TCS2015small %>% #使用数据TCS2015small
group_by(age_strata) %>% #根据age_strata变量进行分组
summarise(meanG4.2 = mean(G4.2, na.rm = TRUE)) #计算变量(G4.2)的平均数
#記得要設定na.rm=T (排除缺失值)
#呈现分组平均数结果
print(age_strata_mean)
# A tibble: 7 × 2
age_strata meanG4.2
<fct> <dbl>
1 1 6.51
2 2 6.63
3 3 6.04
4 4 5.79
5 5 5.74
6 6 5.61
7 7 4.79
本章小结
本章所使用到的R套件包与函数摘录如下表。
套件包 | 函数 | 说明 |
---|---|---|
内建 | setwd ( ) | 設定工作目錄 |
getwd ( ) | 顯示當前工作目錄 | |
install.packages ( ) | 下载套件包 | |
library ( ) | 加载套件包 | |
save ( ) | 将档案存成R数据资料档格式(*.rda) | |
load ( ) | 载入R数据资料档(*.rda) | |
head ( ) | 呈现数据档前六笔个案观察值 | |
attributes ( ) | 查看变量的属性特征及变量(值)标签 | |
table ( ) | 呈现变量的频数 | |
levels ( ) | 呈现类别变量的水平(有几类) | |
data.frame ( ) | 将不同数据转换合并为一個数据框 | |
rm (list=ls( )) | 去除R当前工作环境中所有的数据与物件 | |
dplyr | select ( ) | 选择分析变量 |
mutate ( ) | 产生一个新的变量 | |
arrange (, desc( )) | 将特定变量依其数值由大到小排序 | |
arrange ( ) | 将特定变量依其数值由小到大排序 | |
min_rank(, desc( )) | 数值愈大排名愈前;数值愈小排名愈后 | |
min_rank ( ) | 数值愈小排名愈前;数值愈大排名愈后 | |
percent_rank (, desc( )) | 数值愈大位次愈前;数值愈小位次愈后 | |
percent_rank ( ) | 数值愈小位次愈前;数值愈大位次愈后 | |
group_by ( ) | 根据某个特定变量,进行分组 | |
sjlabelled | read_spss ( ) | 将SPSS格式数据资料档(*.sav)汇入到R |
to_numeric ( ) | 將变量转换為数字变量 | |
to_factor ( ) | 將变量转换為类别变量 | |
set_label ( ) | 设置变量标签 | |
set_labels ( ) | 设置变量值标签 | |
sjmisc | frq ( ) | 呈现变量的频数分布 |
rename_variables ( ) | 重新命名变量的名称 | |
find_var ( ) | 寻找符合某种特定条件的变量 | |
remove_var ( ) | 删除变量 | |
move_columns (, .before) | 将变量移动到某一个变量之前 | |
move_columns (, .after) | 将变量移动到某一个变量之后 | |
rec ( ) | 将原始变量重新编码为另一新的变量 | |
flat_table ( ) | 呈现好几个变量的巢套频数分布,可以用来检查重新编码是否正确 | |
split_var ( ) | 将一个连续变量分割成大小约略相等的不同组别 | |
dicho ( ) | 将某一连续变量转换为二分类变量 | |
add_variables (, .before) | 创建新变量并放置在某个变量之前 | |
add_variables (, .after) | 创建新变量并放置在某个变量之后 | |
add_id ( ) | 创建观察值的id变量 | |
to_dummy ( ) | 根据某一类别变量的”类别数目”,创建出相对应的”虚拟变量数目” | |
replace_columns ( ) | 纵向合并数据档(相同个案,不同变量) | |
std ( ) | 将变量数值进行Z值标准化 | |
center ( ) | 将变量数值进行中心化 | |
set_na ( ) | 将特定数值设置为缺失值 | |
replace_na ( ) | 将缺失值以某一数值代入 | |
row_count ( ) | 计算特定观察值在不同变量出现的次数 |