对车辆路试数据集mtcars进一步分析_数据运算027篇数据的行合并

  dplyr中的分组合并 生活科学哥-R语言科学 2020-10-24 6:23        有段时间没有写一下R的一些小操作了,因为工作实在太忙,又是要一个周末的时间,依旧早起,写一写碰到的操作,权作笔记。突然想起昨天上班路上,开车,听到了个老歌,叫“潇洒走一回”,我想,未来那一天到来的时候,我的墓志铭,上面应该是这首歌,在匆匆的人生中,我们至少要留下点东西,不是么?         有点扯远了哈。今天,我们来看一个合并的问题,是个简单的操作,但是自己刚开始没领悟,原来可以简单实现。

原始的数据及期望的结果

  原始的数据结构如下:

library(dplyr)library(magrittr)tmp> tmp   x y1: 1 a2: 1 b3: 2 c4: 1 d5: 2 e6: 2 f

任务有两种:

  • 根据x列的类别,把y全部合并到一个内容中,如下:

     x new    <dbl> <chr>1     1 a.b.d2     2 c.e.f
  • 依然保留所有的x列,但是y列还是按照x列合并

     x y     new    <dbl> <fct> <chr>1     1 a     a.b.d2     1 b     a.b.d3     2 c     c.e.f4     1 d     a.b.d5     2 e     c.e.f6     2 f     c.e.f
9d7d27276a5a09f9649675077ae1c31a.png

任务1的实现

     其实这个任务,目的非常的明确,那么,如何快速来实现呢?从思路上来说,其实无非就是分组,然后合并即可,简单如下:

 tmp%>%group_by(x)%>%summarise(new=paste0(y,collapse = "."))  #分组之后用summarize来操作一把即可#结果如下:      x new     <chr>1     1 a.b.d2     2 c.e.f

    当时因为没有好好理解分组与summarize的操作,以为summarize只能作一些数学的运算,其实paste0之类的,完全是可以的,比如说,计算分组之后,这些字符串的其它的运算,比如进一步算字符串的个数等:

tmp%>%group_by(x)%>%summarise(new=paste0(y,collapse = ".")%>%nchar())      x   new   <int>1     1     52     2     5#结果如下:# A tibble: 2 x 2      x   new   <int>1     1     52     2     5

 想想也是惭愧,这个本来是一个很简单的事情,却因为思维的固化没想到。

9d7d27276a5a09f9649675077ae1c31a.png

任务2

   相比任务1,任务2也是类似,用mutate生成新列即可:

tmp%>%group_by(x)%>%mutate(new=paste0(y,collapse = "."))#结果如下:     x y     new     <chr>1     1 a     a.b.d2     1 b     a.b.d3     2 c     c.e.f4     1 d     a.b.d5     2 e     c.e.f6     2 f     c.e.f

是不是挺简单的?只要分组之后,啥都好说

9d7d27276a5a09f9649675077ae1c31a.png

任务1的一个骚操作

   说到任务1,原来为了解决这个问题,看到一个骚操作:

library(data.table)tmpdata.table(tmp)tmp[,lapply(.SD,paste0,collapse = "."),by=x]

可能重点就是data.table里的一些使用,不过个人不熟,只能照代码来弄一下,其意思就是,将原来的数据,按照x列分之后进行连接,结果是一样的;重点是一定要加载data.table包并且把数据转成data.table的格式。

> tmp[,lapply(.SD,paste0,collapse = "."),by=x]   x     y1: 1 a.b.d2: 2 c.e.f
9d7d27276a5a09f9649675077ae1c31a.png

其它小知识

   用到summarize之后,看了下帮助文件,其实里面关于生成的数据,分组怎么保留,有个.groups参数,值得去了解一下。

mtcars %>%     group_by(am) %>%    summarise(mpg = sum(mpg), .groups = 'drop')# A tibble: 2 x 2#     am   mpg#* #1     0  326.#2     1  317.#结果无分组mtcars %>%   group_by(am, vs) %>%   summarise(mpg = sum(mpg), .groups = 'drop')# A tibble: 4 x 3#     am    vs   mpg#* #1     0     0  181.#2     0     1  145.#3     1     0  118.#4     1     1  199.#结果按照am,vs分组> mtcars %>%+   group_by(am, vs) %>%+   summarise(mpg = sum(mpg), .groups = 'keep')# A tibble: 4 x 3# Groups:   am, vs [4]     am    vs   mpg  1     0     0  181.2     0     1  145.3     1     0  118.4     1     1  199.#丢弃最后一个分组> mtcars %>%+   group_by(am, vs) %>%+   summarise(mpg = sum(mpg), .groups = 'drop_last')# A tibble: 4 x 3# Groups:   am [2]     am    vs   mpg  1     0     0  181.2     0     1  145.3     1     0  118.4     1     1  199.

这一类的分组是否保留,影响到下一步的操作,值得注意一下。

9d7d27276a5a09f9649675077ae1c31a.png

好了,今天的分享就到这里,大家周末愉快。

参考文献 

1.https://stackoverflow.com/questions/62140483/how-to-interpret-dplyr-message-summarise-regrouping-output-by-x-override

877fa1cf058c436b4ec09f87d9a40805.gif

往期回顾

805debba0d16736858c9d60e63de52f9.gif

01

基本概念

从零开始学R-001篇-程序安装

从零开始学R-002篇-向量

从零开始学R-003篇-数据框

从零开始学R-004篇-列表

从零开始学R-005篇-矩阵

数据结构-006篇-数组实例

数据结构-007篇-因子

 数据运算-008篇-数学与逻辑运算

数据运算-009篇-矩阵运算简单介绍

数据运算-010篇-内置的一般数学计算函数

数据运算-011篇-内置的统计概率函数

数据运算-012篇-集合的操作

逻辑运算-013篇-条件语句

循环语句-014篇-for与while

循环语句-015篇-apply家族

定位函数-016篇-which函数打天下

字符处理-017篇-paste函数

字符处理-018篇-grep,substr,sub等函数

数据运算-019篇-统计函数初体验median与mad

数据运算-020篇-统计函数初体验之分位数quantile

数据运算-021篇-统计函数初体验之差分diff函数

数据运算-022篇-统计函数初体验之中心化函数scale

数据运算-023篇-描述性统计分析及缺失值分析

数据运算-024篇-相关系数分析

数据运算-025篇-dplyr之slice

数据运算-026篇-数据的行拆分

a77a7ef355ad7d055e2c061951bcbecb.gif

02

基础作图

R的作图-001篇-barplot柱状图

R的作图-002篇-pie 作饼图

R的作图-003篇-hist 直方图

R的作图-004篇-boxplot箱线图

R的作图-005篇-核密度图与比较

R的作图-006篇-plot函数

R的作图-007篇-散点图与线性拟合

R的作图-008篇-散点图矩阵

R的作图-009篇-高密度散点图

R的作图-010篇-三维散点图

R的作图-011篇-气泡图

R的作图-012篇-马赛克图

R的作图-013篇-QQ图及原理

R的作图-014篇-lm拟合结果图解释

R的作图-015篇-ggplot2之初体验

R的作图-016篇-ggplot2之geom_point

R的作图-017篇-ggplot2之geom_jitter与rug

R的作图-018篇-ggplot2之geom_line与geom_path

R的作图-019篇-ggplot2之geom_area,geom_polygon geom_ribbon

R的作图-020篇-ggplot2之geom_bar,geom_col与geom_histogram    

R的作图-021篇-ggplot2之geom_density

R的作图-022篇-ggplot2之geom_density2d

R的作图-023篇-ggplot2之geom_boxplot

R的作图-024篇-ggplot2之geom_bin2d

R的作图-025篇-ggplot2之geom_contour()

R的作图-026篇-ggplot2之geom_crossbar 与geom_count()

R的作图-027篇-ggplot2之geom_errorbar 与geom_linerange等简单作图

R的作图-028篇-ggplot2之geom_vline/hline/abline/smooth等

R的作图-029篇-ggplot2之geom_tile,geom_rect与geom_raster

R的作图-030篇-ggplot2之geom_text与geom_label

作图进阶-031篇-ggplot2之geom_violin

作图进阶-032篇-ggplot2之分面facet_grid与facet_wrap

作图进阶-033篇-ggplot2之legend

作图进阶-034篇-ggplot2之作图区的设定

作图进阶-035篇-ggalluvial之桑基图

作图进阶-036篇-ggridges之峰峦图

作图进阶-037篇-坐标轴标签重叠的优化

作图进阶-038篇-数据拟合作图分析

作图进阶-039篇-plotly包之add_XXX

作图进阶-040篇-plotly的type与mode

作图进阶-041篇-plotly的颜色设置

作图进阶-042篇-plotly中往图中增加标签

作图进阶-043篇-plotly通过add_fun灵活叠加图

作图进阶-044篇-plotly的图例legend设置

作图进阶-045篇-plotly的坐标轴Ticks设置

作图进阶-046篇-plotly设定默认的trace颜色

作图进阶-047篇-plotly中画误差棒作图进阶-048篇-plotly中的箱线图

作图进阶-049篇-plotly中的动画效果

作图进阶-050篇-plotly中二维密度与等高线

作图进阶-051篇-add_heatmap的使用

作图进阶-052篇-add_ribbons与polygons的使用

作图进阶-053篇-add_segments,add_paths与add_table

作图进阶-054篇-基于矩阵画热图

作图进阶-055篇-mesh3d画个雨伞玩玩

作图进阶-056篇-经验累积分布函数的实现

作图进阶-057篇-画个瓶子玩玩

 作图进阶-058篇-plotly中的曲线旋转

作图进阶-059篇-曲线旋转后简单构造三维图形   作图进阶-060篇-曲线的拉伸 作图进阶-061篇-ggplot2中的legend排列 作图进阶-062篇-ggplot2中采用双标度 作图进阶-063篇-ggplot2中的标度 作图进阶-064篇-plotly里的gauge chart 作图进阶-065篇-plotly里的瀑布图 作图进阶-066篇-plotly里的漏斗图 作图进阶-067篇-ggplot2中标注显著性 作图进阶-068篇-ggplot2中的嵌套子图 作图进阶-069篇-r中的数据表格处理 作图进阶-070篇-再谈R中的颜色 作图进阶-071篇-再谈R中的因子 作图进阶-072篇-展现交集的韦恩图 作图进阶-073篇-用R快速生成word文档批 a77a7ef355ad7d055e2c061951bcbecb.gif

03

作图技巧

作图技巧-001篇-facet_zoom放大局部图

作图技巧-002篇-ggplot2 中的字体设置

作图技巧-003篇-ggplot2 新版本 3.3.0的一些新功能

作图技巧-004篇-QQ图之DIY

作图技巧-005篇-plotly做3维曲面图

作图技巧-006篇-数据标记初体验

作图技巧-007篇-数据标记之geom_mark_hull进阶

作图技巧-008篇-ggforce中甜甜圈饼图的作法及其它的功能

作图技巧-009篇-ggplot作图时的因子排序

作图技巧-010篇-plot_ly中的mesh3d

作图技巧-011篇-ggplot_build中的数据提取实现histogram与density同步叠加

作图技巧-012篇-ggplot中的stat_sum等系列

作图技巧-013篇-ggplot分面图的标签设置

作图技巧-014篇-不同的样条曲线bspline

作图技巧-015篇-大家一起来拼图

作图技巧-016篇-拼图系列之2-cowplot

作图技巧-017篇-拼图工具之3-patchwork

作图技巧-018篇-第二坐标轴在ggplot2中的实现

作图技巧-019篇-draw_key_XXX系列

作图技巧-020篇-更改ggplot2作图的默认设置

作图技巧-021篇-增加基于表达式的坐标轴标题

a77a7ef355ad7d055e2c061951bcbecb.gif

04

R的技巧

R的技巧-001篇-快速从列表中提取元素组成数据框

R的技巧-002篇-快速对数据框中满足条件的列进行替换

R的技巧-003篇-数字的不同取整与进位

R的技巧-004篇-文件名提取分类成表

R的技巧-005篇-直方图与分布图的叠加

R的技巧-006篇-ggplot2中的cut类函数

R的技巧-007篇-assign与get:动态生成变量与获取变量

R的技巧-008篇-pretty函数实现完美分割点

R的技巧-009篇-数据填充                 

R的技巧-010篇-dplyr之slice,mutate,summarize  与do

R的技巧-011篇-dnorm,pnorm与qnorm傻傻分不清

R的技巧-012篇-缝缝补补改创建好的ggplot2图

R的技巧-013篇-approx函数插值

R的技巧-014篇-openxls包处理excel数据

72930734b20242c7c67011e6d6af8a93.png 

欢迎关注与转发,如有不懂,可以共同探讨,在后台留言或者是扫码下方。

361391e0541d699fa9d931c3da03501c.png

你点的每一个在看,我都认真当成了喜欢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值