gpt4 book ai didi

r - 如何为R中的多个列计算组内的百分比变化?

转载 作者:行者123 更新时间:2023-12-03 14:40:40 28 4
gpt4 key购买 nike

我有一个带有ID列,日期列(每个ID为12个月)的数据框,并且有23个数字变量。我想获取每个ID中每个月的百分比变化。我正在使用quantmod软件包以获得百分比变化。

这是一个只有三列的示例(为简单起见):

ID Date V1 V2 V3
1 Jan 2 3 5
1 Feb 3 4 6
1 Mar 7 8 9
2 Jan 1 1 1
2 Feb 2 3 4
2 Mar 7 8 8


我尝试使用dplyr和summarise_each函数,但未成功。更具体地说,我尝试了以下方法(train是数据集的名称):

library(dplyr)
library(quantmod)

group1<-group_by(train,EXAMID)

foo<-function(x){
return(Delt(x))
}

summarise_each(group1,funs(foo))


我也尝试在dplyr中使用do函数,但我也没有成功(我猜晚上不好!)。

我认为问题在于Delt函数。当我用sum函数替换Delt时:

foo<-function(x){
return(sum(x))
}
summarise_each(group1,funs(foo))


结果是,每个变量在每个ID的日期之内求和。那么,每个ID的百分比如何逐月变化?

最佳答案

怎么样使用
pct <- function(x) x/lag(x)? (或(x/lag(x)-1)*100,或者您希望准确指定pct更改)
例如。,

pct(1:3)
[1] NA 2.0 1.5


编辑:添加弗兰克的建议

pct <- function(x) {x/lag(x)}

dt %>% group_by(ID) %>% mutate_each(funs(pct), c(V1, V2, V3))

ID Date V1 V2 V3
1 Jan NA NA NA
1 Feb 1.500000 1.333333 1.2
1 Mar 2.333333 2.000000 1.5
2 Jan NA NA NA
2 Feb 2.000000 3.000000 4.0
2 Mar 3.500000 2.666667 2.0

关于r - 如何为R中的多个列计算组内的百分比变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31352685/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com