【发布时间】:2020-06-08 09:15:53
【问题描述】:
我有一个数据框,其中包含大量变量的每周值。我想遍历每一列并获得每行的每周变化和以百分比表示的变量。
例子:
a = c(2,3,1,9)
b = c(4,5,8,1)
sentiment = cbind(a,b) %>%
as.data.frame()`
Outcome should be:
a b a_delta b_delta
2 4 NA NA
3 5 0.5 0.3
1 8 -0.7 0.6
9 1 8.0 -0.8
在我目前的方法中,我使用两个步骤:(1) 创建每周滞后,(2) 计算滞后值与值之间的百分比差异。没有错误消息,但计算仍然不正确,我不知道为什么。任何帮助将非常感激!
library(data.table)
a = c(2,2.5,2,4)
b = c(4,5,8,1)
sentiment = cbind(a,b) %>%
as.data.frame()
setDT(sentiment)[, paste0(names(sentiment), "_delta") := lapply(.SD, function(x) shift(x, 1L,
type="lag")/x -1)]
【问题讨论】:
-
我认为你的意思是 ` x / shift(x, 1L, type = "lag) -1 ` 而不是相反
标签: r loops data.table iteration lapply