Afi*_*ari 0 r dplyr data-transform
我注意到这个操作对于看似简单的计算来说非常耗时。它可能解释了完成当前 R 脚本的所有时间中超过 60% 的时间。
实际数据包含 about500,000 rows和 about 100,000 unique ids(分组依据的列)。
用于计算的列类型lag difference为lubridate::dmy_hms。因此,滞后差异是指seconds时间差异。
我认为这些可能在为什么计算需要这么长时间的原因中发挥了作用,但我也很好奇我是否可以以不同的方式重写以下代码,或者R base如果它更快的话可能只是使用(也许以进行一些数据类型体操来确保其他 dplyr类似操作保持不变)
dief <- tibble(id = rep(letters,4), time = 1:length(id) + sample(1:30, length(id),replace = T))
dief %>%
arrange(id) %>%
group_by(id) %>%
mutate(time_difference = (time - lag(time)))
Run Code Online (Sandbox Code Playgroud)
两个选项是 dtplyr 和tidytable。我个人使用后者。两者都利用 data.table 但使用 dplyr 风格的代码。
dief <- tibble(id = rep(letters,4), time = 1:length(id) + sample(1:30, length(id),replace = T))
dief %>%
arrange.(id) %>%
mutate.(time_difference = (time - lags.(time)),
.by = id)
Run Code Online (Sandbox Code Playgroud)
以下是一些速度比较。
| 归档时间: |
|
| 查看次数: |
773 次 |
| 最近记录: |