第七天:tidyr包——unite(),separate()和replace_na()函数

文章目录

前言

一、unite()函数

二、separate()函数

三、replace_na()函数

总结


前言

今天继续学习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
  姓名   语文  数学  英语
     
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
  姓名   语文  数学  英语
     
1 小明     95    89    89
2 小刚     88    78    69
3 小红     60    90    70

总结

每天学R一点点!!!

你可能感兴趣的:(R语言中的tidyverse包,r语言,数据结构)