社区首页 >问答首页 >如何在group_by中使用粘贴?

如何在group_by中使用粘贴?
EN

Stack Overflow用户
提问于 2021-07-19 10:41:19
回答 1查看 305关注 0票数 1

我有以下数据(例如):

代码语言:javascript
代码运行次数:0
复制
id <- c(1, 1, 2, 2, 2)
x <- c(2, 2, 3, 3, 4)
dat <- data.frame(id, x)

现在,我可以按组(id)计数x的出现情况,并在dat2中保存:

代码语言:javascript
代码运行次数:0
复制
dat2 <- dat %>% group_by(id, x) %>% dplyr::mutate(count = n())

现在计算id的情况:

代码语言:javascript
代码运行次数:0
复制
dat2 <- dat2 %>% group_by(id) %>% dplyr::mutate(j = n())

一切都很好。结果:

代码语言:javascript
代码运行次数:0
复制
dat2

# A tibble: 5 x 4
# Groups:   id [2]
     id     x count     j
  <dbl> <dbl> <int> <int>
1     1     2     2     2
2     1     2     2     2
3     2     3     2     3
4     2     3     2     3
5     2     4     1     3

现在是我的问题。我想在"group_by“中使用粘贴。更确切地说,我想使用两个字符-“占位符”i(对于id)和z(对于x)来控制分组。我不想使用“真实”对象id和x:

代码语言:javascript
代码运行次数:0
复制
i <- "id"
z <- "x"

dat2 <- dat %>% group_by(dat[[paste(i, sep = "")]], dat[[paste(z, sep = "")]]) %>% dplyr::mutate(count = n())

这个第一步也是有效的,和上面一样。但是,进入下一个最后一步时,会出现一个错误:

代码语言:javascript
代码运行次数:0
复制
dat2 <- dat2 %>% group_by(dat[[paste(i, sep = "")]]) %>% dplyr::mutate(j = n ())

Error: Problem with `mutate()` input `..1`.
x Input `..1` can't be recycled to size 2.
i Input `..1` is `dat[[paste(i, sep = "")]]`.
i Input `..1` must be size 2 or 1, not 5.
i The error occured in group 1: dat[[paste(i, sep = "")]] = 1, dat[[paste(z, sep = "")]] = 2.
Run `rlang::last_error()` to see where the error occurred.

我的问题是:如何避免这一错误,并获得与以前一样的结果,而不用粘贴?使用粘贴命令可能看起来很奇怪,但我需要使用字符占位符。

我很高兴有任何帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-19 10:42:37

我们可以用across代替paste

代码语言:javascript
代码运行次数:0
复制
library(dplyr)
dat %>%
      group_by(across(all_of(c(i, z)))) %>% 
      mutate(count = n()) %>%
      group_by(across(all_of(i))) %>% 
      mutate(j = n())
# A tibble: 5 x 4
# Groups:   id [2]
     id     x count     j
  <dbl> <dbl> <int> <int>
1     1     2     2     2
2     1     2     2     2
3     2     3     2     3
4     2     3     2     3
5     2     4     1     3

或者使用add_count代替分组

代码语言:javascript
代码运行次数:0
复制
dat %>% 
   add_count(across(all_of(c(i, z))), name = 'count') %>% 
   add_count(across(all_of(i)), name = 'j')
  id x count j
1  1 2     2 2
2  1 2     2 2
3  2 3     2 3
4  2 3     2 3
5  2 4     1 3
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68445490

复制
相关文章
如何在 Vim 中复制,剪切,粘贴
Vim 以及它的前辈 Vi 在 macOS 和基本上所有的 Linux 版本上都预装了。在你喜欢的编辑器还没有安装的情况下,对 Vim 有一些基本了解是很有用处的。
雪梦科技
2020/05/11
41.2K0
如何在 Vim 中复制,剪切,粘贴
【DB笔试面试511】如何在Oracle中写操作系统文件,如写日志?
可以利用UTL_FILE包,但是,在此之前,要注意设置好UTL_FILE_DIR初始化参数。
AiDBA宝典
2019/09/30
28.8K0
【DB笔试面试511】如何在Oracle中写操作系统文件,如写日志?
R语言 分组计算,不止group_by
最近在研究excel透视图,想到好像自己在R-分组操作并不是很流畅,顺便学习分享一下。R自带数据集比较多,今天就选择一个我想对了解的mtcars数据集带大家学习一下R语言中的分组计算(操作)。
拴小林
2020/07/10
8.2K1
Sublime中code优雅粘贴到word中
对于记录的任务, Markdown已是标配,但实验报告, 毕业论文还是躲不开word, 这里推荐一种可以将sublime中的代码优雅粘贴到word中的sublime插件 1.下载SublimeHigh
zhaoolee
2018/04/19
1.1K0
Sublime中code优雅粘贴到word中
JavaScript 中的复制粘贴操作
在日常业务开发,比如复制后增加版权信息,点击复制,等场景中需要进行复制粘贴的操作,以下是几种实现方案。
FEWY
2021/09/08
2.3K0
git命令中带有特殊符号如@
使用带用户密码clone的方式: git clone https://username:password@remote 当username和password中含有特殊符号会导致出错, 因为为http的请求,所以需要将特殊符号encode成url格式的 java使用: String c = java.net.URLEncoder.encode(".","utf-8"); System.out.println(c); 源文档 <http://blog.csdn.net/qq1142003960/article/
千往
2018/01/24
2.1K0
VIM 中的常用复制粘贴命令
光标放到第6行, 输入:2yy 光标放到第9行, 输入:p 此方法适合复制少量行文本的情况,复制第6行(包括)下面的2行数据,放到第9行下面。
前Thoughtworks-杨焱
2021/12/08
3.4K0
Spring在无RedirectAttributes的情况下(如Interceptor中)使用Flash scope
判断逻辑很简单,但是重定向的时候需要前台有消息提示,如果是在Controller中,可以在方法上注入RedirectAttributes参数,但是Interceptor中默认没有这个参数,那么我们如何实现RedirectAttributes的flashMessage功能呢?
飞奔去旅行
2019/06/13
5.4K0
如何在openGauss 2.1.0中使用Job?
Job类似Unix中的crontab,有定时执行的功能,可以在指定的时间点或每天的某个时间点等自行执行任务。在各类系统使用运行过程中,经常会遇到需要定时完成的任务,比如定时更新数据,定时统计数据生成报表等等,这些工作都可以使用Job来完成。在openGauss 2.1.0中,提供了以下接口来实现管理Job。
数据和云
2021/11/10
6.4K0
如何在openGauss 2.1.0中使用Job?
使用 sed 命令进行复制、剪切和粘贴
如果你使用的是 Linux、BSD 或 macOS,那么它们已经安装了 GNU 的或 BSD 的 sed。这些是原始 sed 命令的独特重新实现。虽然它们很相似,但也有一些细微的差别。本文已经在 Linux 和 NetBSD 版本上进行了测试,所以你可以使用你的计算机上找到的任何 sed,但是对于 BSD sed,你必须使用短选项(例如 -n 而不是 --quiet)。
用户8965210
2021/09/27
1.9K0
如何在CDH中安装和使用StreamSets
StreamSets由Informatica前首席产品官Girish Pancha和Cloudera前开发团队负责人Arvind Prabhakar于2014年创立。他们成立该公司主要是应对来自动态数据(data in motion)的挑战 - 包括数据源,数据处理和数据本身,这是一个称为“数据漂移“(https://streamsets.com/reports/data-drift/)的问题。StreamSets设想从头开始管理数据流,避免已有产品和工具的缺陷,并启用一种管理动态数据(data in motion)的新方法。
Fayson
2018/03/30
36.1K2
Excel 技巧篇-选择性粘贴,只粘贴数值,不粘贴公式
最开始是这样的,我有一行数据,要每一个都除以1000,单位就是k,我想一个一个改就太麻烦了,想到了公式和宏编程,宏编程很强大,但是比较麻烦,于是就用公式了。
小蓝枣
2020/09/23
1.5K0
Vim中如何全选复制粘贴、批量注释
(区分大小写!!!) 全部删除:按esc键后,先按gg(到达顶部),然后dG 全部复制:按esc键后,先按gg,然后ggyG 全选高亮显示:按esc键后,先按gg,然后ggvG或者ggVG
全栈程序员站长
2022/09/29
5K0
使用 sed 命令进行复制、剪切和粘贴
很少有 Unix 命令像 sed、grep 和 awk 一样出名,它们经常组合在一起,可能是因为它们具有奇怪的名称和强大的文本解析能力。它们还在一些语法和逻辑上有相似之处。虽然它们都能用于文本解析,但都有其特殊性。本文研究 sed 命令,它是一个 流编辑器(stream editor)。
用户8639654
2021/09/13
1.7K0
选择性粘贴:粘贴公式,值,转置
我们都知道CTRL C, CTRL V 但是我们有时候并不是要完全的粘贴 我们可能只是要粘贴这个值,去掉公式 或者只是要粘贴这个格式 或者是要横竖转换 这时候你要用到选择性粘贴 首先 还是先告诉你们
但老师
2022/03/22
2.6K0
选择性粘贴:粘贴公式,值,转置
Vim复制粘贴_vim复制粘贴命令
大家好,又见面了,我是你们的朋友全栈君。 原文地址:http://lsong17.spaces.live.com/blog/cns!556C21919D77FB59!603.entry
全栈程序员站长
2022/11/09
3.1K0
使用VBA复制并粘贴Excel图表到PowerPoint
VBA的最大优势之一是可以无缝地在Office应用程序套件之间相互调用,例如,在Excel中操作PowerPoint。本文将使用VBA复制Excel中的一个图表,将粘贴到新创建的PowerPoint中。
fanjy
2022/11/16
2.8K0
使用VBA复制并粘贴Excel图表到PowerPoint
vim复制粘贴_vim如何复制粘贴
在命令行模式下输入字符v(小写),便可以进入按字符选择模式,通过h、i、j、k键移动光标选择要进行复制的字符串。
全栈程序员站长
2022/08/02
6.1K0
如何在 Linux 中安装、设置和使用 SNMP?
SNMP(Simple Network Management Protocol)是一种用于管理和监控网络设备的协议。它允许网络管理员通过远程方式收集设备的运行状态、性能数据和错误信息,以便进行故障排除和网络优化。在Linux系统中,我们可以安装、设置和使用SNMP来监控和管理服务器和网络设备。本文将详细介绍在Linux中安装、设置和使用SNMP的步骤和方法。
网络技术联盟站
2023/06/25
3.1K0
如何在 Linux 中安装、设置和使用 SNMP?
点击加载更多

相似问题

如何在R中使用group_by复制粘贴数据?

22

如何在Python中粘贴(如R)和groupby

217

r group_by值折叠和粘贴

23

将图像粘贴到富文本中(如gmail)

16

如何“复制粘贴”文件如windows

17
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档