检查成员关系

R 中的数据清洗

Maggie Matsui

Content Developer @ DataCamp

分类数据

  • 分类变量具有固定且已知的取值集合
数据 示例取值
婚姻状况 unmarried, married
家庭收入分档 0-20K, 20-40K, ...
T 恤尺码 S, M, L, XL
R 中的数据清洗

因子(factor)

  • factor 中,每个类别以数字存储,并有相应标签
数据 标签 数值表示
婚姻状况 unmarried, married 1, 2
家庭收入分档 0-20K, 20-40K, ... 1, 2, ...
T 恤尺码 S, M, L, XL 1, 2, 3, 4
R 中的数据清洗

因子水平(levels)

tshirt_size
L  XL XL L  M  M  M  L  XL L  S  M  M  S  S  M  XL S  L  S ... 
Levels: S M L XL
levels(tshirt_size)
"S"  "M"  "L"  "XL"
R 中的数据清洗

不属于的取值

  • factor 的取值不能超出预定义集合
数据 水平(levels) 不允许
婚姻状况 unmarried, married divorced
家庭收入分档 0-20K, 20-40K, ... 10-30K
T 恤尺码 S, M, L, XL S/M
R 中的数据清洗

这些取值从何而来?

 

左侧为数据录入错误,包含文本框(自由文本)和下拉菜单(下拉选择);右侧为解析错误,表示为数据库。

R 中的数据清洗

筛选连接:快速回顾

  • 在不新增列的情况下,保留或删除第一张表中的观测

标题:半连接(semi-join)。副标题:X 中哪些观测也在 Y 中?左侧为一列的表 X,值为 a、b、c。右侧为一列的表 Y,值为 a、c、d。两表中的 a 与 c 由线相连。X 中 a 和 c 的单元格被高亮。

R 中的数据清洗

筛选连接:快速回顾

  • 在不新增列的情况下,保留或删除第一张表中的观测

标题:反连接(anti-join)。副标题:X 中哪些观测不在 Y 中?左侧为一列的表 X,值为 a、b、c。右侧为一列的表 Y,值为 a、c、d。两表中的 a 与 c 由线相连。X 中 b 的单元格被高亮。

R 中的数据清洗

血型示例

study_data
      name   birthday blood_type
1     Beth 2019-10-20         B-
2 Ignatius 2020-07-08         A-
3     Paul 2019-08-12         O+
4    Helen 2019-03-17         O-
5 Jennifer 2019-12-17         Z+
6  Kennedy 2020-04-27         A+
7    Keith 2019-04-19        AB+
blood_types
  blood_type
1         O-
2         O+
3         A-
4         A+
5         B+
6         B-
7        AB+
8        AB-
R 中的数据清洗

血型示例

study_data
      name   birthday blood_type
1     Beth 2019-10-20         B-
2 Ignatius 2020-07-08         A-
3     Paul 2019-08-12         O+
4    Helen 2019-03-17         O-
5 Jennifer 2019-12-17         Z+  <--
6  Kennedy 2020-04-27         A+
7    Keith 2019-04-19        AB+
blood_types
  blood_type
1         O-
2         O+
3         A-
4         A+
5         B+
6         B-
7        AB+
8        AB-
R 中的数据清洗

查找非成员

维恩图。左圆代表 study_data,右圆代表 blood_types。左侧为 Z+。中间为 A-、O-、AB+、A+、O+、B-。右侧为 B+ 和 AB-。左侧的 Z+ 为红色。

R 中的数据清洗

反连接(anti-join)

study_data %>%
  anti_join(blood_types, by = "blood_type")
      name   birthday blood_type
1 Jennifer 2019-12-17         Z+
R 中的数据清洗

移除非成员

维恩图。左圆代表 study_data,右圆代表 blood_types。左侧为 Z+。中间为 A-、O-、AB+、A+、O+、B-。右侧为 B+ 和 AB-。中间的血型为蓝色。

R 中的数据清洗

半连接(semi-join)

study_data %>%
  semi_join(blood_types, by = "blood_type")
      name   birthday blood_type
1     Beth 2019-10-20         B-
2 Ignatius 2020-07-08         A-
3     Paul 2019-08-12         O+
4    Helen 2019-03-17         O-
5  Kennedy 2020-04-27         A+
6    Keith 2019-04-19        AB+
R 中的数据清洗

Passons à la pratique !

R 中的数据清洗

Preparing Video For Download...