簡體   English   中英

使用gsub和regexpr在r中子字符串化

[英]Subset a string in r using gsub and regexpr

我需要更改以下內容

test <- c("August 08, 2016, Hour 23",
          "June 26, 2016, Hour 14",
          "November 26, 2016, Hour 01")

test1 <- c("Wednesday:8pm-12pm:31days",
"Tuesday:7pm-10pm:6days|Today:7AM-6PM:7days")

編輯:-在test1中,我不太在意星期幾,但對時間戳更感興趣。 我希望將8 PM-12PM轉換為24小時格式,如:2000-因為我需要4位數字,所以可以將字符串作為輸出。 (上午10點之前的任何內容都必須為0x)

分為兩個數據集:

a$date <- c(08/08/2016,06/26/2016,11/26/2016) # all in date class
a$hour <- c(23, 14 , 01) #all should be numeric


b$time <- c("2000","1922","0718") #can be character
b$days <- c(31,6,7)  #needs to be numeric

小時和天情況的邏輯將是相似的。 我想在R中使用gsubregexpr

我當前的日期部分流程太長且乏味:

mat <- as.data.frame(matrix(unlist(strsplit(test," ")),ncol=5,byrow=T))

mat$V6 <-  str_replace_all(paste(as.numeric(str_replace_all(mat$V2,"[[:punct:]]","")),
                          "-",as.character(mat$V1),
                          "-",as.numeric(str_replace_all(mat$V3,"[[:punct:]]",""))),
                          "[[:space:]]","")


mat$V7 <- as.Date(mat$V6, format="%d-%B-%Y")

class(mat$V7)

mat$V8 <- as.numeric(as.character(mat$V5))

在這兩種情況下使用gsubregexpr任何建議將不勝感激。

這和墊子線一樣。 繼續嘗試。

library(reshape2)
mat <- colsplit(test," ", c("M","D","YYYY","HR","Time"))

我認為這是您最好的選擇,而不是使用gsub或regexpr。

mat$Len <- paste(mat$D,mat$M,mat$YYYY)
mat$Len <- gsub(",","",gsub(" ","-",mat$Len))

我不喜歡使用嵌套的gsub,但是在這里可以達到目的。 保持簡潔。 這應該注意mat $ v6行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM