gpt4 book ai didi

r - 两个事件之间的百分比差异

转载 作者:行者123 更新时间:2023-12-04 12:26:02 26 4
gpt4 key购买 nike

我有一个如下所示的数据框:

df1 <- 

ID event CONC
1 1 5
1 2 10
3 1 7
3 2 10

对于每一行,我想计算两个事件之间浓度的百分比差异并将其添加到新列中。

例如:对于ID=1

diff <- (10-5)*100

我需要有关如何为每一行指定 (CONCrow2-CONCrow1) 的帮助。然后我可以使用以下内容按 ID 应用它:

df2 <- df1 %>%
group_by(ID) %>%
mutate (percent = ....)

最佳答案

你可以试试

library(dplyr)
df1 %>%
group_by(ID) %>%
mutate(percent=100*(CONC-lag(CONC)))

或者使用base R

transform(df1, percent=ave(CONC, ID, FUN=function(x) 100*c(NA, diff(x))))

或者使用data.table

library(data.table)
setDT(df1)[, percent := 100*c(NA, diff(CONC)), ID]

更新

根据@Jan Gorecki 的评论,shiftdata.table_1.9.5(开发版)中可用的新选项

 setDT(df1)[,percent := 100*(CONC - shift(CONC)), by=ID][]

关于r - 两个事件之间的百分比差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27812975/

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