[英]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中使用gsub
和regexpr
。
我當前的日期部分流程太長且乏味:
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))
在這兩種情況下使用gsub
和regexpr
任何建議將不勝感激。
這和墊子線一樣。 繼續嘗試。
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.