如何在 r 中执行数据清理(带有示例)


数据清洗是指将原始数据转换为适合分析或模型构建的数据的过程。

在大多数情况下,“清理”数据集涉及处理缺失值和重复数据。

以下是在 R 中“清理”数据集的最常见方法:

方法 1:删除含有缺失值的行

 library (dplyr)

#remove rows with any missing values
df %>% na. omit ()

方法2:用另一个值替换缺失值

 library (dplyr)
library (tidyr)

#replace missing values in each numeric column with median value of column
df %>% mutate(across(where(is. numeric ), ~replace_na(., median(., na. rm = TRUE ))))

方法 3:删除重复行

 library (dplyr)

df %>% distinct(. keep_all = TRUE )

以下示例展示了如何在实践中使用这些方法中的每一种,并使用 R 中的以下数据框(其中包含有关各种篮球运动员的信息):

 #create data frame
df <- data. frame (team=c('A', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'),
                 points=c(4, 4, NA, 8, 6, 12, 14, 86, 13, 8),
                 rebounds=c(9, 9, 7, 6, 8, NA, 9, 14, 12, 11),
                 assists=c(2, 2, NA, 7, 6, 6, 9, 10, NA, 14))

#view data frame
df

   team points rebound assists
1 to 4 9 2
2 to 4 9 2
3 B NA 7 NA
4 C 8 6 7
5 D 6 8 6
6 E 12 NA 6
7 F 14 9 9
8 G 86 14 10
9:13:12 NA
10 I 8 11 14

示例 1:删除含有缺失值的行

我们可以使用以下语法来删除任意列中缺少值的行:

 library (dplyr)

#remove rows with missing values
new_df <- df %>% na. omit ()

#view new data frame
new_df

   team points rebound assists
1 to 4 9 2
2 to 4 9 2
4 C 8 6 7
5 D 6 8 6
7 F 14 9 9
8 G 86 14 10
10 I 8 11 14

请注意,新数据框不包含任何缺失值的行。

示例2:用另一个值替换缺失值

我们可以使用以下语法将缺失值替换为每列的中值:

 library (dplyr)
library (tidyr)

#replace missing values in each numeric column with median value of column
new_df <-df %>% mutate(across(where(is. numeric ),~replace_na(.,median(.,na. rm = TRUE )))) 

#view new data frame
new_df

   team points rebound assists
1 to 4 9 2.0
2 to 4 9 2.0
3 B 8 7 6.5
4 C 8 6 7.0
5 D 6 8 6.0
6 E 12 9 6.0
7 F 14 9 9.0
8 G 86 14 10.0
9:13 12 6.5
10 I 8 11 14.0

请注意,每个数字列中的缺失值均已替换为该列的中值。

请注意,您还可以将公式中的中位数替换为平均值,以将缺失值替换为每列的平均值。

注意:在此示例中,我们还必须加载Tidyr包,因为drop_na()函数来自该包。

示例 3:删除重复行

我们可以使用以下语法将缺失值替换为每列的中值:

 library (dplyr)

#remove duplicate rows
new_df <- df %>% distinct(. keep_all = TRUE )

#view new data frame
new_df

  team points rebound assists
1 to 4 9 2
2 B NA 7 NA
3 C 8 6 7
4 D 6 8 6
5 E 12 NA 6
6 F 14 9 9
7 G 86 14 10
8:13:12 NA
9 I 8 11 14

请注意,第二行已从数据框中删除,因为第二行中的每个值都是第一行中的值的重复项。

注意:您可以在此处找到 dplyrdistinct ()函数的完整文档。

其他资源

以下教程解释了如何在 R 中执行其他常见任务:

如何在 R 中对数据进行分组和汇总
如何在 R 中创建汇总表
R中如何删除缺失值的行

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注