我有一个数据帧,有几个不同的时间(假数据):
library(tidyverse)
library(lubridate)
df <- data.frame(q1_begin = dmy_hms("12.02.2021 08:00:00"),
q1_end = dmy_hms("12.02.2021 09:00:00"),
q2_begin = dmy_hms("12.02.2021 09:00:00"),
q2_end = dmy_hms("12.02.2021 09:01:00"),
q3_begin = dmy_hms("12.02.2021 09:00:00"),
q3_end = dmy_hms("12.02.2021 09:00:10"))
df <- df %>% mutate(time1 = q1_end - q1_begin,
time2 = q2_end - q2_begin,
time3 = q3_end - q3_begin) 现在我想按行计算所有列的总和(= time1 + time2 + time3)。但是,如果不手动输入变量名,我如何才能做到这一点呢?我试过了:
df %>% mutate(grandTime = sum(starts_with("time"))) # <- Doesn't work发布于 2021-02-12 20:06:41
以下是一种可能的解决方案:
library(tidyverse)
library(lubridate)
df %>% mutate(total_time = Reduce(`+`, select(., starts_with('time'))))
# ... time1 time2 time3 total_time
# ... hours 1 mins 10 secs 3670 secs或者使用data.table:
library(data.table)
setDT(df)[, total_time := Reduce(`+`, .SD), .SDcols=patterns('time')]https://stackoverflow.com/questions/66170154
复制相似问题