前言
今天继续学习tidyr包中的unite(),separate()函数和缺失值的处理
一、unite()函数
该函数可以将数据中多列变量合并一列变量,语法如下:
unite(data, col, …, sep = “_”, remove = TRUE)
- data:为数据框
- col:被组合的新列名称
- …:指定哪些列需要被组合
- sep:组合列之间的连接符,默认为下划线
- remove:是否删除被组合的列
示例: 使用示例数据mtcars
library(tidyverse)
data <- mtcars
head(data,6)
####将mpg,cyl,disp合并成一行并用_符号连接
dataNew<-data%>%
unite(cyl_disp,cyl,disp,sep="_")
head(dataNew)
mpg cyl_disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6_160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6_160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4_108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6_258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8_360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6_225 105 2.76 3.460 20.22 1 0 3 1
二、separate()函数
该函数函数可将一列拆分为多列一般可用于日志数据或日期时间型数据的拆分,语法如下:
separate(data, col, into, sep = “[^[:alnum:]]+”, remove = TRUE,
convert = FALSE, extra = “warn”, fill = “warn”, …)
- data:为数据框
- col:需要被拆分的列
- into:新建的列名,为字符串向量
- sep:被拆分列的分隔符
- remove:是否删除被分割的列
示例:
data_new <- dataNew %>%
separate(cyl_disp,c("CYL","DISP"),sep = "_")
head(data_new)
mpg CYL DISP hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
三、replace_na()函数
通常情况下我们的数据中很有可能有缺失值,在进行数据分析之前,我们要对缺失值进行处理。
在tidyr包中,可以用replace_na()函数进行处理。语法如下:
replace_na(data, replace=list(values) #list为一个列表,将插入的值放在list里面
###构建一个数据框
TB <- tibble (姓名=c('小明','小刚','小红'),
语文=c(95,88,NA),
数学=c(89,78,90),
英语=c(89,69,NA))
TB
# A tibble: 3 × 4
姓名 语文 数学 英语
<chr> <dbl> <dbl> <dbl>
1 小明 95 89 89
2 小刚 88 78 69
3 小红 NA 90 NA
#将数据填入数据缺失值中。
TB_new <-TB %>%
replace_na(replace = list(语文=60, 英语=70))
TB_new
# A tibble: 3 × 4
姓名 语文 数学 英语
<chr> <dbl> <dbl> <dbl>
1 小明 95 89 89
2 小刚 88 78 69
3 小红 60 90 70
总结
每天学R一点点!!!