第七天:tidyr包——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
  姓名   语文  数学  英语
  <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一点点!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值