由一个组逐列串联
栏目: JavaScript · 发布时间: 7年前
内容简介:翻译自:https://stackoverflow.com/questions/34778422/progressive-concatenation-of-a-column-by-a-group
参见英文答案 > Cumulatively paste (concatenate) values grouped by another variable 4个
假设我有这个输入:
ID date_1 date_2 str 1 1 2010-07-04 2008-01-20 A 2 2 2015-07-01 2011-08-31 C 3 3 2015-03-06 2013-01-18 D 4 4 2013-01-10 2011-08-30 D 5 5 2014-06-04 2011-09-18 B 6 5 2014-06-04 2011-09-18 B 7 6 2012-11-22 2011-09-28 C 8 7 2014-06-17 2013-08-04 A 10 7 2014-06-17 2013-08-04 B 11 7 2014-06-17 2013-08-04 B
我想通过组变量ID逐步连接str列的值,如以下输出所示:
ID date_1 date_2 str 1 1 2010-07-04 2008-01-20 A 2 2 2015-07-01 2011-08-31 C 3 3 2015-03-06 2013-01-18 D 4 4 2013-01-10 2011-08-30 D 5 5 2014-06-04 2011-09-18 B 6 5 2014-06-04 2011-09-18 B,B 7 6 2012-11-22 2011-09-28 C 8 7 2014-06-17 2013-08-04 A 10 7 2014-06-17 2013-08-04 A,B 11 7 2014-06-17 2013-08-04 A,B,B
我尝试使用此代码的ave()函数:
within(table, {
Emp_list <- ave(str, ID, FUN = function(x) paste(x, collapse = ","))
})
但它提供了以下输出,这不是我想要的:
ID date_1 date_2 str 1 1 2010-07-04 2008-01-20 A 2 2 2015-07-01 2011-08-31 C 3 3 2015-03-06 2013-01-18 D 4 4 2013-01-10 2011-08-30 D 5 5 2014-06-04 2011-09-18 B,B 6 5 2014-06-04 2011-09-18 B,B 7 6 2012-11-22 2011-09-28 C 8 7 2014-06-17 2013-08-04 A,B,B 10 7 2014-06-17 2013-08-04 A,B,B 11 7 2014-06-17 2013-08-04 A,B,B
当然,我想避免循环,因为我在大型数据库上工作.
使用Reduce()的ave()怎么样? Reduce()函数允许我们在计算结果时累积结果.因此,如果我们使用paste()运行它,我们可以累积粘贴的字符串.
f <- function(x) {
Reduce(function(...) paste(..., sep = ", "), x, accumulate = TRUE)
}
df$str <- with(df, ave(as.character(str), ID, FUN = f)
它给出了更新的数据帧df
ID date_1 date_2 str 1 1 2010-07-04 2008-01-20 A 2 2 2015-07-01 2011-08-31 C 3 3 2015-03-06 2013-01-18 D 4 4 2013-01-10 2011-08-30 D 5 5 2014-06-04 2011-09-18 B 6 5 2014-06-04 2011-09-18 B, B 7 6 2012-11-22 2011-09-28 C 8 7 2014-06-17 2013-08-04 A 10 7 2014-06-17 2013-08-04 A, B 11 7 2014-06-17 2013-08-04 A, B, B
注意:函数(…)paste(…,sep =“,”)也可以是函数(x,y)paste(x,y,sep =“,”). (感谢Pierre Lafortune)
翻译自:https://stackoverflow.com/questions/34778422/progressive-concatenation-of-a-column-by-a-group
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
白帽子讲浏览器安全
钱文祥 / 电子工业出版社 / 2016-3 / 79.00元
浏览器是重要的互联网入口,一旦受到漏洞攻击,将直接影响到用户的信息安全。作为攻击者有哪些攻击思路,作为用户有哪些应对手段?在《白帽子讲浏览器安全》中我们将给出解答,带你了解浏览器安全的方方面面。《白帽子讲浏览器安全》兼顾攻击者、研究者和使用者三个场景,对大部分攻击都提供了分析思路和防御方案。《白帽子讲浏览器安全》从攻击者常用技巧的“表象”深入介绍浏览器的具体实现方式,让你在知其然的情况下也知其所以......一起来看看 《白帽子讲浏览器安全》 这本书的介绍吧!
HTML 压缩/解压工具
在线压缩/解压 HTML 代码
HEX HSV 转换工具
HEX HSV 互换工具