我正在尝试为R中的数据表生成一个特征,该特征将计算该列的当前条目与前一个条目之间的差。该列是一个时间变量,告诉我时分秒,我希望创建一个变量,告诉我每条记录之间经过了多少时间。看起来很简单。
我一直试图只与dplyr一起工作,但是lag()函数并不能解决问题。简而言之,这就是我试图做的事情。
ah <- data %>%
group_by(person_id) %>%
arrange(Date, Time) %>%
mutate(time_gap = Time - lag(Time))
但是,此代码出现错误。 “二进制运算符的非数字参数”。我不确定为什么会这样。
答案 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))