gpt4 book ai didi

r - R中的单独小时和分钟

转载 作者:行者123 更新时间:2023-12-01 09:42:53 24 4
gpt4 key购买 nike

我有一个时间列,但它没有被 : 或任何东西分隔。它看起来像这样:

  person      time
1 356
1 931
1 2017
1 2103
2 256
2 1031
2 1517
2 2206

如何将它们分开?

最佳答案

解决这个问题有不同的方法。您选择哪种方法取决于您想要的输出。

例如,您可以使用 stringr::str_splittime 拆分为一个包含小时和分钟的 list 向量——前进

library(tidyverse)
df %>% mutate(time = str_split(time, "(?=\\d{2}$)"))
# person time
#1 1 3, 56
#2 1 9, 31
#3 1 20, 17
#4 1 2, 13
#5 2 2, 56
#6 2 10, 31
#7 2 15, 17
#8 2 2, 26

或者我们可以使用 tidyr::separate 创建两个新列 hoursminutes

df %>% separate(time, c("hours", "minutes"), sep = "(?=\\d{2}$)")
# person hours minutes
#1 1 3 56
#2 1 9 31
#3 1 20 17
#4 1 2 13
#5 2 2 56
#6 2 10 31
#7 2 15 17
#8 2 2 26

为了回应您的评论,您可以使用 stringr::str_replace

df %>% mutate(time = str_replace(time, "(?=\\d{2}$)", ":"))
# person time
#1 1 3:56
#2 1 9:31
#3 1 20:17
#4 1 2:13
#5 2 2:56
#6 2 10:31
#7 2 15:17
#8 2 2:26

同样在 base R 中使用 sub

transform(df, time = sub("(?=\\d{2}$)", ":", time, perl = TRUE))

给出相同的结果。

示例数据

df <- read.table(text = "
person time
1 356
1 931
1 2017
1 213
2 256
2 1031
2 1517
2 226", header = T)

关于r - R中的单独小时和分钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57326764/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com