【问题标题】:Split characters of a column in a dataframe to insert an underscore between values in R拆分数据框中列的字符以在 R 中的值之间插入下划线
【发布时间】:2020-09-12 19:22:31
【问题描述】:

我有一个数据框,其中包含 YYYYMMDD 格式的日期列。我想将此列值转换为 YYYY_MM_DD 以匹配另一个数据库中的格式。

我发现的解决方案主要集中在拆分字符串,例如逗号分隔。

我基本上想要一个索引 YYYYMMDD 并在第 4 个字符和第 6 个字符之后插入“_”的解决方案。

谢谢

更新:

发布后,我几乎立即找到了适合我的解决方案:

library(tidyr)

# create names for new columns
newCol <- c("YEAR", "MONTH", "DAY")

# separate existing column at 4 and 6 character
newData <- separate(table, old_column, newCol, sep = c(4,6))

# combining the three columns to one delimited by '_'
table$newColumn <- paste(table$YEAR, table$MONTH, table$DAY, sep = "_")

【问题讨论】:

    标签: r date indexing split character


    【解决方案1】:

    你可以试试gsub + as.Date,例如,

    > gsub("-","_",as.Date(s,"%Y%m%d"))
    [1] "2020_10_30" "2020_09_22"
    

    数据

    s <- c("20201030", "20200922")
    

    【讨论】:

      【解决方案2】:

      您可以使用 R 中的format 函数来实现所需,如下所示:

      year = format(as.Date("20200913", "%Y%m%d"), "%Y")
      month = format(as.Date("20200913", "%Y%m%d"), "%m")
      day = format(as.Date("20200913", "%Y%m%d"), "%d")
      dt = paste0(year, "_", month, "_", day)
      print(dt)
      

      这将打印以下结果:

      [1] "2020_09_13"
      

      【讨论】:

        【解决方案3】:

        你可以尝试另一种方式

        library(stringr)
        date1 <- c("20201030", "20200922")
        date2 <- paste0(str_sub(date1, 1,4), "_", str_sub(date1, 5,6), "_", str_sub(date1, 7,8))
        #[1] "2020_10_30" "2020_09_22"
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-12-02
          • 1970-01-01
          • 1970-01-01
          • 2017-06-12
          • 1970-01-01
          • 1970-01-01
          • 2020-08-07
          • 1970-01-01
          相关资源
          最近更新 更多