计算R产生的NA中每天的对数差异,以进行每天的首次观察

时间:2019-10-11 14:00:45

标签: r group-by dplyr

问题:计算每天的日志差异(每天分组)。理想结果应该为每天的第一次观察产生NA。

library(dplyr)
library(tidyverse)
library(tibble)
library(lubridate)
df <- tibble(t = c("2019-10-01 09:30", "2019-10-01 09:35", "2019-10-01 09:40", "2019-10-02 09:30", "2019-10-02 09:35", "2019-10-02 09:40", "2019-10-03 09:30", "2019-10-03 09:35", "2019-10-03 09:40"), v = c(105.0061, 104.891, 104.8321, 104.5552, 104.4407, 104.5837, 104.5534, 103.6992, 103.5851)) # data

# my attempt
df %>% 
  # create day
  mutate(day = day(t)) %>%
  # group by day
  group_by(day) %>%
  # calculate log difference and append column
  mutate(logdif = diff(log(df$v)))

问题是

Error: Column `logdif` must be length 3 (the group size) or one, not 8

我需要什么:

[1]            NA -0.0010967280 -0.0005616930        NA         -0.0010957154
[6]  0.0013682615            NA -0.0082035450 -0.0011009036

1 个答案:

答案 0 :(得分:4)

切勿在{{1​​}}管道中使用$,也需要将dplyr附加到NA输出中

diff