如何计算R表的列中的条目与上一个条目之间的差异?

时间:2019-08-21 23:00:14

标签: r

我正在尝试为R中的数据表生成一个特征,该特征将计算该列的当前条目与前一个条目之间的差。该列是一个时间变量,告诉我时分秒,我希望创建一个变量,告诉我每条记录之间经过了多少时间。看起来很简单。

我一直试图只与dplyr一起工作,但是lag()函数并不能解决问题。简而言之,这就是我试图做的事情。

ah <- data %>% 
  group_by(person_id) %>% 
  arrange(Date, Time) %>% 
  mutate(time_gap = Time - lag(Time)) 

但是,此代码出现错误。 “二进制运算符的非数字参数”。我不确定为什么会这样。

1 个答案:

答案 0 :(得分:0)

下面的示例有效。

# Create sample data frame
df <- data.frame(
  person_id = c(1, 1, 1, 2, 2, 2),
  datetime = c(
  "2012-01-01 00:00:30", 
  "2012-01-01 00:01:00", 
  "2012-01-01 00:02:00", 
  "2020-01-01 00:00:35", 
  "2020-01-01 00:01:00", 
  "2020-01-01 00:02:33")
  )

# Convert character variable to datetime
df$datetime <- as.POSIXct(df$datetime)

# Calculate time deltas by person_id
ah <- df %>% 
  group_by(person_id) %>% 
  arrange(datetime) %>% 
  mutate(time_gap = datetime - lag(datetime))