首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >R: ddply重复每年的累积数据

R: ddply重复每年的累积数据
EN

Stack Overflow用户
提问于 2012-05-10 14:34:01
回答 1查看 1.7K关注 0票数 4

与这个问题here相关,但为了清楚起见,我决定问另一个问题,因为“新”问题与原来的问题没有直接关系。简而言之,我使用ddply对三年中的每一年累加一个值。我的代码从第一年获取数据,并在列的第二和第三年的行中重复。我的猜测是,每个1年期的数据块都被复制到整个列中,但我不明白为什么。

问:如何才能在指定列的正确行中获得每年的累加值?

编辑: for循环或类似的循环很重要,因为我最终希望根据列名列表自动计算新列,而不是手动计算每个新列。循环遍历列名列表。

我经常使用ddply和cumsum组合,所以突然出现问题是相当令人烦恼的。

编辑:此代码已更新为我确定的解决方案,它基于@Chase的答案如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
require(lubridate)
require(plyr)
require(xts)
require(reshape)
require(reshape2)

set.seed(12345)
# create dummy time series data
monthsback <- 24
startdate <- as.Date(paste(year(now()),month(now()),"1",sep = "-")) - months(monthsback)
mydf <- data.frame(mydate = seq(as.Date(startdate), by = "month", length.out = monthsback),
                   myvalue1 = runif(monthsback, min = 600, max = 800),
                   myvalue2 = runif(monthsback, min = 1900, max = 2400),
                   myvalue3 = runif(monthsback, min = 50, max = 80),
                   myvalue4 = runif(monthsback, min = 200, max = 300))

mydf$year <- as.numeric(format(as.Date(mydf$mydate), format="%Y"))
mydf$month <- as.numeric(format(as.Date(mydf$mydate), format="%m"))

# Select columns to process
newcolnames <- c('myvalue1','myvalue4','myvalue2')

# melt n' cast
mydf.m <- mydf[,c('mydate','year',newcolnames)]
mydf.m <- melt(mydf.m, measure.vars = newcolnames)
mydf.m <- ddply(mydf.m, c("year", "variable"), transform, newcol = cumsum(value))
mydf.m <- dcast(mydate ~ variable, data = mydf.m, value.var = "newcol")
colnames(mydf.m) <- c('mydate',paste(newcolnames, "_cum", sep = ""))
mydf <- merge(mydf, mydf.m, by = 'mydate', all = FALSE)
mydf
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-10 14:43:58

我真的不理解你的for循环,但是你是不是把事情搞得过于复杂了?你不能直接使用transformddply

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#Make sure it's ordered properly
mydf <- mydf[order(mydf$year, mydf$month),]

#Use ddply to calculate the cumsum by year:
ddply(mydf, "year", transform, 
      cumsum1 = cumsum(myvalue1), 
      cumsum2 = cumsum(myvalue2))
#----------
       mydate myvalue1 myvalue2 year month   cumsum1   cumsum2
1  2010-05-01 744.1808 264.4543 2010     5  744.1808  264.4543
2  2010-06-01 775.1546 238.9828 2010     6 1519.3354  503.4371
3  2010-07-01 752.1965 269.8544 2010     7 2271.5319  773.2915
....
9  2011-01-01 745.5411 218.7712 2011     1  745.5411  218.7712
10 2011-02-01 797.9474 268.1834 2011     2 1543.4884  486.9546
11 2011-03-01 606.9071 237.0104 2011     3 2150.3955  723.9650
...
21 2012-01-01 690.7456 225.9681 2012     1  690.7456  225.9681
22 2012-02-01 665.3505 232.1225 2012     2 1356.0961  458.0906
23 2012-03-01 793.0831 206.0195 2012     3 2149.1792  664.1101

编辑-这是未经测试的,因为我在这台机器上没有R,但这是我的想法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
require(reshape2)
mydf.m <- melt(mydf, measure.vars = newcolnames)
mydf.m <- ddply(mydf.m, c("year", "variable"), transform, newcol = cumsum(value))
dcast(mydate + year + month  ~ variable, data = mydf.m, value.var = "newcol")
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10536295

复制
相关文章
39. R 数据整理(十: R 的四种累积运算与by)
其中data是一个数据框或矩阵;INDICES是一个因子或因子组成的列表,定义了分组;FUN是任意函数。
北野茶缸子
2021/12/17
6070
R语言去重复数据
本次总结来源网络,有多处参考 在R语言中,去掉重复数据的函数是:duplicated 删掉所有列中数据一样的: >test <- data.frame( x1 = c(1,2,3,4,5,1,3,5), x2 = c("a","b","c","d","e","a","b","e"), x3 = c("a","b","c","d","e","a","c","e")) > test x1 x2 x3 1 1 a a 2 2 b b 3 3 c c 4 4 d d
努力在北京混出人样
2019/02/18
2.4K0
R语言meta分析(5)累积Meta分析
meta分析是对具有共同研究目的相互独立的多个研究结果给予合并分析,综合评价研究结果。其方法已广泛应用于医学领域 ,且日趋完善。常规meta分析均是对数据进行一次性合并,并不能看到不同研究逐个纳入后引起的动态变化。而累积meta分析恰恰弥补了这一劣势。
用户1359560
2019/08/12
1.7K0
R语言重复测量数据的多重比较
使用的数据来自孙振球,徐勇勇《医学统计学》第4版。课本的电子版已上传到QQ群,加群即可免费获取!
医学和生信笔记
2022/11/15
1K0
R语言重复测量数据的多重比较
维度模型数据仓库(二十) —— 累积的度量
(五)进阶技术         15. 累积的度量         本篇说明如何实现累积月底金额,并对数据仓库模式和初始装载、定期装载脚本做相应地修改。累积度量是半可加的,而且它的初始装载比前面做的要复杂的多。         可加、半可加、不可加事实         事实表中的数字度量可划分为三类。最灵活、最有用的度量是完全可加的,可加性度量可以按照与事实表关联的任意维度汇总。半可加度量可以对某些维度汇总,但不能对所有维度汇总。差额是常见的半可加度量,除了时间维度外,它们可以跨所有维度进行加法操作。另外,一些度量是完全不可加的,例如比率。         修改模式         建立一个新叫做month_end_balance_fact的事实表,用来存储销售订单金额的月底累积值。month_end_balance_fact表在模式中构成了另一个星型模式。新的星型模式除了包括这个新的事实表,还包括两个其它星型模式中已有的维度表,即product_dim和month_dim。图(五)- 15-1显示了新的模式。注意这里只显示了相关的表。
用户1148526
2022/06/14
5490
维度模型数据仓库(二十) —— 累积的度量
PyTorch中的梯度累积
我们在训练神经网络的时候,超参数batch_size的大小会对模型最终效果产生很大的影响,通常的经验是,batch_size越小效果越差;batch_size越大模型越稳定。理想很丰满,现实很骨感,很多时候不是你想增大batch_size就能增大的,受限于显存大小等因素,我们的batch_size往往只能设置为2或4,否则就会出现"CUDA OUT OF MEMORY"(OOM)报错。如何在有限的计算资源下,采用更大的batch_size进行训练,或者达到和大batch_size一样的效果?这就是梯度累加(Gradient Accumulation)技术了
mathor
2021/07/28
1.5K0
「R」针对重复ID的处理
重复,特别是针对一些样本名称的重复问题的处理,是我在进行生信分析时经常遇到的。一种常见的解决策略是先找到重复之处,然后去重。但如果我们想要保留全部的重复ID呢?
王诗翔呀
2021/08/06
1.8K0
shell累积1
创建多个目录 mkdir {a,b,c,d} 将一个文件copy到当前目录下所有目录内 find . -type d -exec cp Makefile {} \; 替换当前目录下所有的Makefile里面的TARGET为target find . -name Makefile -exec sed -i s/TARGET/target/g {} \; 查看一下当前目录下的所有的Makefile里面的内容 find . -name Makefile -print -exec cat {} \; ./b/Ma
用户3765803
2019/03/05
3440
学习累积流图
累积流图(CFD: Cumulative Flow Diagram)是一种很有效地度量分析方法,可以很好地反映工作项在每个流程节点的流动情况,观察到不同角色在交付过程中相互协作的情况,并可以很容易地分析出研发过程各个阶段在制品、交付周期、交付效率随时间变化的趋势。
CKL的思考
2023/08/28
3710
学习累积流图
R语言第二章数据处理③删除重复数据目录总结
================================================
用户1359560
2018/12/24
10.1K0
R的数据
可以看出,字符型数据是在双引号或单引号中括起来的内容;数值型就是数字;逻辑型包括三个TRUE,FALSE和NA。
用户8284892
2023/03/08
3740
R海拾遗-三因素重复
三因素重复测量资料方差分析,在这项研究中,研究人员想要评估饮食和运动对10个久坐的人减肥的影响。参与者参与了四项试验:(1)不节食,不锻炼;(2)节食;(3)锻炼;(4)节食和锻炼相结合。
火星娃统计
2020/09/15
9820
R海拾遗-三因素重复
MySQL 中查找重复数据,删除重复数据
数据库版本 Server version: 5.1.41-community-log MySQL Community Server (GPL)
很酷的站长
2022/11/27
7.7K0
MySQL 中查找重复数据,删除重复数据
动态规划基础题(第4题): 此累积和非累积和
Input is given from Standard Input in the following format:
小码匠
2022/06/16
6000
动态规划基础题(第4题): 此累积和非累积和
处理MySQL 重复的数据记录
有些 MySQL 数据表中可能存在重复的记录,有些情况我们允许重复数据的存在,但有时候我们也需要删除这些重复的数据。
用户4988085
2021/07/25
3.3K0
442 数组中重复的数据
给定一个整数数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次。 找到所有出现两次的元素。 你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗? 示例: 输入: [4,3,2,7,8,2,3,1] 输出: [2,3] class Solution { public List<Integer> findDuplicates(int[] nums) { List<Integer> list=new Arra
CaesarChang张旭
2021/06/01
5.2K1
R中重复值、缺失值及空格值的处理
1、R中重复值的处理 unique函数作用:把数据结构中,行相同的数据去除。 #导入CSV数据 data <- read.csv('1.csv', fileEncoding = "UTF-8", stringsAsFactors = FALSE); #对重复数据去重 new_data <- unique(data) 重复值处理函数:unique,用于清洗数据中的重复值。 “dplyr”包中的distinct() 函数更强大: distinct(df,V1,V2) 根据V1和V2两个条件来进行去重 uniq
Erin
2018/01/09
8.2K0
R语言ggplot2绘制经验累积分布(empirical cumulative distribution)曲线的简单小例子
原文链接是 https://benjaminlmoore.wordpress.com/2014/04/06/author-inflation-in-academic-literature/
用户7010445
2021/04/21
7.9K0
R语言ggplot2绘制经验累积分布(empirical cumulative distribution)曲线的简单小例子
去除重复数据
该文介绍了如何去除重复数据的方法,分为完全重复和部分重复。对于完全重复,使用distinct关键字去重;对于部分重复,使用子查询和row_number()分析函数。这些方法适用于不同的数据库系统,如Oracle、MySQL和Hive。
用户1148526
2018/01/03
2K0
累积柱状图加误差棒
最近做实验太累,感觉没有特别多的时间好好读文献了。可能这一段时间更新的会比较慢。今天先来点轻松地~
Listenlii-生物信息知识分享
2020/05/28
1.6K0

相似问题

使用ddply合并R中的重复行

44

SQL中的每年累积计数

23

R在每年年初将累积和重置为零

30

每年从零开始的累积列

11

R中重复的值的累积序列?

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文