数据整理—dplyr包(mutate系列)

发布时间:2025-04-30 01:24

Excel图表添加数据系列,Alt + Shift + E #生活技巧# #数码产品使用技巧# #办公软件快捷键#

640?wx_fmt=png

作者:小橙子

来源:小橙子学数据分析

有很多成语,来形容根据一个事物,生成了另一个事物。

比如:依样画葫芦、东施效颦等等(略有歧义)。

而今天讲解的mutate,就类似这种情况,根据现有的信息,生成一个新的变量。

dplyr中,几个主要函数

1filter 系列  #筛选满足条件的样本(cases),第一篇已经讲解  2select 系列  #筛选满足条件的变量,第二篇已经讲解3mutate 系列  #生成新的变量4summarise 系列 #概括数据集信息5join 系列  #关联函数,同SQL中的join

在数据处理过程中,经常会遇到这几个函数

mutate系列:mutate、mutate_all、mutate_at、mutate_if、transtate

用法:mutate(.data, ...)

mutate的使用方式,主要是依靠"..."的公式变化,生成新的变量

mutate支持以下几种公式 :

+、-、*、÷ 、%%、%|% 等常用计算方式

lead()、 lag()

dense_rank(), min_rank(), percent_rank(), row_number(), cume_dist(), ntile()

cumsum(), cummean(), cummin(), cummax(), cumany(), cumall()

na_if(), coalesce()

if_else(), recode(), case_when()

先从"rank"系列开始介绍,这一函数类,主要是用来划分名次、等级、百分比、密度等等

1#percent_rank,按照[0,1]百分比的形式进行排序 2# 举例说明,按照x的数值,按照百分比进行划分 3x <- c(5, 1, 3, 2, 4) 4percent_rank(x) 5# [1] 1.00 0.00 0.50 0.25 0.75 6# 这类函数比较适用于 ,需要排名次的场景。比如考试、比赛... 7 8#  比如根据iris中的Sepal.Length,进行百分比表示, 9iris %>% 10  mutate(Length_rank = percent_rank(Sepal.Length)) %>% # %>% 管道的标识符11  select(Length_rank,everything()) # select函数中,everything()可以用来更换变量顺序  12#   Length_rank Sepal.Length Sepal.Width Petal.Length Petal.Width Species13#   0.21476510          5.1         3.5          1.4         0.2  setosa14#   0.10738255          4.9         3.0          1.4         0.2  setosa15#   ...(数据省略)1617# row_number(),不仅可以用来对想来排序,也可以表示获取行数18 mutate(mtcars, row_number() == 1L) # 新生成的变量,用来判断是否是第一行,返回TRUE 或者 FALSE    19 mtcars %>% filter(between(row_number(), 1, 10)) # 通过row_number,筛选1-10行.有点类似 top_n(10)2021 # ntile,切割数据集为N块,返回具体的数值,属于等分切割22 ntile(runif(10), 5)23# [1] 1 2 4 5 5 3 4 2 3 124# 某种程度上,ntile可以用来划分训练集和测试集(类似sample函数) 25# ind <- sample(2, nrow(mtcars), replace = TRUE, prob = c(0.8,0.2))26# mtcars[ind == 1,]27# 备注:ntile对数据框使用的时候,如果没有特殊标明具体的数据列,ntile会对所有的列进行切割操作

再说一下"cum"函数系列,这类函数计算累积指标,比如截止到某一天的平均值、总和、乘积等等。

1# cumsum,累积相加的数值 2cumsum(1:10) 3# 1  3  6 10 15 21 28 36 45 55 4# 原数据集有N个,返回也是N个 5# 类似MS_SQL中的sum(s)over(order by y) 6 7# cumany(), cumall(),则是逻辑判断,并非计算数值 8cumall(-5:5) 9# TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE10# 返回的是逻辑值,0代表FALSE

最后说一下"判断"函数系列,这类函数应用比较广泛。

比如生活中,当天空下雨了,小明就打伞了

类似EXCEL中的 if函数,vlookup函数等等

1# if_else 2# 用法:if_else(condition, true, false, missing = NULL),比传统的ifelse多了一个missing参数 3# 并且if_else能保留原数据的数据类型,不会降维操作 4 5# 假设x >= 0,则 y-1,y < 0 的情况下, y + 1  6df <- data.frame(x = c(-5:4), y = runif(10)) 7df %>% mutate( xy = if_else(x >= 0, y -1, y+1, y)) 8#     x         y         xy 9#   -5    0.7760150  1.776015010#   -4    0.9310976  1.931097611# case_when中,判断的条件可以更加的多样化12# case_when,与SQL中的case...when...一样13# 同C语言中的switch一样   1415x <- c(1:10,NA)16case_when(17  x %% 2 == 0 ~ "偶",18  x %% 2 == 1 ~ "奇",19  TRUE ~ as.character(x)   20  #可以设置一个默认值21)22#  "奇" "偶" "奇" "偶" "奇" "偶" "奇" "偶" "奇" "偶" NA 

mutate 总结:

 mutate 类似于SQL中,根据表的现有变量,生成新变量

 R语言中,支持多种数据生成方式,使得实际应用中更加高效

 下一篇,将探讨如何利用“summarise ”,总结数据特性

——————————————

往期精彩:

内推 |阿里大文娱-数据分析(广州/北京)

滴滴宋世君:DS(数据分析师),究竟是做什么的?

采访了“996背后的那些人”:孤立无援,进退两难

R语言中文社区2018年终文章整理(作者篇)

R语言中文社区2018年终文章整理(类型篇)

640?wx_fmt=png

网址:数据整理—dplyr包(mutate系列) https://www.yuejiaxmz.com/news/view/896224

相关内容

R语言ETL工程:创建字段(mutate)
大数据环境下的高效数据清洗策略
【时间序列管理秘籍】:xts数据包基础及深度解析
Pandas如虎添翼!数据清洗新神器Pyjanitor
大数据安全的一系列挑战
数据分析逻辑整理——餐厅数据
现实生活中的数据分析是什么
如何高效整理数据库
完整图书馆管理系统(包含设计思路、图形界面、后台数据库)
高效整理数据:Excel实用技巧指南(如何用excel整理.数据)

随便看看