使用 dplyr 对 lubridate hms 进行排序
sorting lubridate hms using dplyr
我有一个字符串格式的时间 H:M:S。我想将其转换为时间格式,然后按降序对该字段进行排序。我用 lubridate 和 dplyr 尝试了以下操作,但我无法对计时器列进行排序(以 hms 为单位)。此外,在使用 lubridate 的 hms 之后,列类型变得未知。所以我不知道这是否是排序的问题,因为我也没有从 mutate
获得排名列。请看下面的例子:
s <- c("08:30:40", "09:30:40")
df <- data.frame("clock" = s)
df
#> clock
#> 1 08:30:40
#> 2 09:30:40
# convert string to time
library(lubridate)
df$timer <- hms(df$clock)
df
#> clock timer
#> 1 08:30:40 8H 30M 40S
#> 2 09:30:40 9H 30M 40S
library(dplyr)
sorted_df <- df %>% arrange(desc(timer)) %>% mutate(rank = row_number())
df
#> clock timer
#> 1 08:30:40 8H 30M 40S
#> 2 09:30:40 9H 30M 40S
我们可以在 'timer' 上用 as.numeric
换行,然后在输出
上应用 desc
library(dplyr)
library(lubridate)
df %>%
arrange(desc(as.numeric(timer))) %>%
mutate(rank = row_number())
# clock timer rank
#1 09:30:40 9H 30M 40S 1
#2 08:30:40 8H 30M 40S 2
我有一个字符串格式的时间 H:M:S。我想将其转换为时间格式,然后按降序对该字段进行排序。我用 lubridate 和 dplyr 尝试了以下操作,但我无法对计时器列进行排序(以 hms 为单位)。此外,在使用 lubridate 的 hms 之后,列类型变得未知。所以我不知道这是否是排序的问题,因为我也没有从 mutate
获得排名列。请看下面的例子:
s <- c("08:30:40", "09:30:40")
df <- data.frame("clock" = s)
df
#> clock
#> 1 08:30:40
#> 2 09:30:40
# convert string to time
library(lubridate)
df$timer <- hms(df$clock)
df
#> clock timer
#> 1 08:30:40 8H 30M 40S
#> 2 09:30:40 9H 30M 40S
library(dplyr)
sorted_df <- df %>% arrange(desc(timer)) %>% mutate(rank = row_number())
df
#> clock timer
#> 1 08:30:40 8H 30M 40S
#> 2 09:30:40 9H 30M 40S
我们可以在 'timer' 上用 as.numeric
换行,然后在输出
desc
library(dplyr)
library(lubridate)
df %>%
arrange(desc(as.numeric(timer))) %>%
mutate(rank = row_number())
# clock timer rank
#1 09:30:40 9H 30M 40S 1
#2 08:30:40 8H 30M 40S 2