首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有动力学的变异柱(dplyr ot data.table)

具有动力学的变异柱(dplyr ot data.table)
EN

Stack Overflow用户
提问于 2022-02-20 08:12:42
回答 1查看 36关注 0票数 0

你能帮帮我吗?如何使用dplyr的变体函数或data.table库向dataframe添加动态列?

例如,我们有以下数据:

代码语言:javascript
运行
复制
name  sum
а      3
b      7
c      13
d      11
e      16

我们需要一个列"dynamics“,其中包含当前行中的和与前一行中的和之间的差异:

代码语言:javascript
运行
复制
name  sum     dynamics
a      3      -
b      7      4
c      13     6
d      11     -2
e      16     5

第一行没有前一行(所以是"-"),因为第二行动力学等于7-3=4,3d等于13-7=6,依此类推。

我尝试了不同的变体,例如:

代码语言:javascript
运行
复制
df %>% mutate(dynamics = value - value[-1])

但这不管用。

如何正确地写这个?

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2022-02-20 16:51:22

输入

代码语言:javascript
运行
复制
dat =data.table(name = letters[1:5], sum=c(3,7,13,11,16))

data.table

代码语言:javascript
运行
复制
dat[, dynamics:=sum - shift(sum)][]

或者,使用dplyr:

代码语言:javascript
运行
复制
dat %>% mutate(dynamics = sum - lag(sum))

输出:

代码语言:javascript
运行
复制
   name sum dynamics
1:    a   3       NA
2:    b   7        4
3:    c  13        6
4:    d  11       -2
5:    e  16        5
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71192497

复制
相关文章

相似问题

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