首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >两个事件的百分比差异

两个事件的百分比差异
EN

Stack Overflow用户
提问于 2015-01-07 05:29:52
回答 1查看 1.9K关注 0票数 3

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

代码语言:javascript
运行
复制
df1 <- 

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

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

例如:对于ID=1

代码语言:javascript
运行
复制
diff <- (10-5)*100

我需要帮助如何为每个单独的行指定(CONCrow2-CONCrow 1)。然后,我可以使用下面的ID来应用它:

代码语言:javascript
运行
复制
df2 <- df1 %>%
 group_by(ID) %>%
 mutate (percent = ....)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-07 05:33:36

你可以试试

代码语言:javascript
运行
复制
library(dplyr)
df1 %>% 
    group_by(ID) %>% 
    mutate(percent=100*(CONC-lag(CONC)))

或者使用base R

代码语言:javascript
运行
复制
transform(df1, percent=ave(CONC, ID, FUN=function(x) 100*c(NA, diff(x))))

或者使用data.table

代码语言:javascript
运行
复制
library(data.table)
setDT(df1)[, percent := 100*c(NA, diff(CONC)), ID]

更新

基于@Jan的评论,shiftdata.table_1.9.5 (devel版本)中的一个新选项。

代码语言:javascript
运行
复制
 setDT(df1)[,percent := 100*(CONC - shift(CONC)), by=ID][]
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27812975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档