我有一个包含117个对象(行)和51个变量(列)的数据表。我想从上一行中减去每一行,并将结果发布到新的数据表中。
我的数据表是利率的时间序列,我想计算每日差额。
答案 0 :(得分:1)
apply(dt, MARGIN = 2, diff)
将为每一列计算每个元素与上一个元素之间的差。 试试:
a = data.frame(matrix(c(1,1,1,3,3,3,7,7,7),byrow = T,nrow=3))
apply(a,2,diff)
答案 1 :(得分:0)
假设您将其作为示例数据:
df <- data.frame(date = as.Date(c("2019-01-03", "2019-01-04", "2019-01-05", "2019-01-06")), value = c(3,5,7,6))
date value
1 2019-01-03 3
2 2019-01-04 5
3 2019-01-05 7
4 2019-01-06 6
然后使用dplyr
中的tidyverse
,您可以执行以下操作:
library(tidyverse)
df2 <- df %>%
mutate(difference = lag(value, n=1L) - value)
date value difference
1 2019-01-03 3 NA
2 2019-01-04 5 -2
3 2019-01-05 7 -2
4 2019-01-06 6 1
...您只需要决定如何处理行索引1中的第一个NA。