【问题标题】:R function to separate characters of unequal width [duplicate]R函数分隔宽度不等的字符[重复]
【发布时间】:2019-10-13 02:24:49
【问题描述】:

我正在尝试使用字符格式的时间增量来分隔一列。

大多数观察的格式为 MM:SS,但也有少数采用 HH:MM:SS 格式。我试图根据“:”分成几列,这样我就可以将时间减少到几秒钟来进行一些基本的分析。

我想得到这个:

     Time
    1   11:15
    2   12:36
    3 1:15:17

进入这个:

        Hour  Minuet Second 
    1    NA     11   15
    2    NA     12   36
    3     1     15   17     

我试过了

      separate(df, time, into = c("Hours", "Minuets", "Seconds"), by = ":")

返回:

         Hour  Minuet Second 
    1    11     15   NA
    2    12     36   NA
    3     1     15   17   

【问题讨论】:

  • 我认为by = ":" 应该是separate 的参数,而不是into 向量的元素。
  • 那是我的错误。为了清楚起见,我已经编辑了上面的代码

标签: r string character


【解决方案1】:

这应该可以工作

library(dplyr)
library(tidyr)
df %>%
  separate(time, c("Hour", "Minute", "Second"), sep = ":", fill = "left")
# -------------------------------------------------------------------------

#   Hour Minute Second
# 1 <NA>     11     15
# 2 <NA>     12     36
# 3    1     15     17

数据

#dput(df)
df <- structure(list(time = c("11:15", "12:36", "1:15:17")), class = "data.frame", row.names = c(NA, 
-3L))

?separate

fill 如果 sep 是一个字符向量,它控制当没有足够的片段时会发生什么。 共有三个有效选项:

>"warn" (the default): emit a warning and fill from the right

>"right": fill with missing values on the right

>"left": fill with missing values on the left

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多