不正确地替换R中的字符串
我需要在R中替换笨拙的字符串,特别是那些格式怪异的时间。数据如下所示:不正确地替换R中的字符串,r,string,time,replace,stringr,R,String,Time,Replace,Stringr,我需要在R中替换笨拙的字符串,特别是那些格式怪异的时间。数据如下所示: Date | Time | AmbientTemp 2000-01-01 | 11:00 a | 25 2000-01-01 | 11:30 a | 25.5 2000-01-01 | 11:00 p | 20 2000-01-01 | 11:30 p | 19.5 a和p分别表示AM和PM(明显) lubridate和baseR无法将这些
Date | Time | AmbientTemp
2000-01-01 | 11:00 a | 25
2000-01-01 | 11:30 a | 25.5
2000-01-01 | 11:00 p | 20
2000-01-01 | 11:30 p | 19.5
a
和p
分别表示AM和PM(明显)
lubridate
和base
R无法将这些日期转换为正确的格式。因此,我转向了笨重的str\u replace\u all
函数(从packagestringr
)来转换大数据帧中的所有时间:>130000条记录
示例功能:
uploadDat$Time = str_replace_all(uploadDat$Time,"11:00 a","11:00")
uploadDat$Time = str_replace_all(uploadDat$Time,"11:00 p","23:00")
在应用stringr
函数之前,我使用as.character()
更改了times的类
结果是完美的,但11点钟的时间(如上所述)转换如下:
Date | Time | AmbientTemp
2000-01-01 | 101:00 | 25
2000-01-01 | 101:30 | 25.5
2000-01-01 | 113:30 | 20
2000-01-01 | 113:30 | 19.5
为什么这些特定时间转换不正确?我们可以
粘贴“m”
在时间结束时,将其转换为POSIXct
format(as.POSIXct(paste0(df$Time, "m"), format = "%I:%M %p"), "%T")
#[1] "11:00:00" "11:30:00" "23:00:00" "23:30:00"
我们可以在时间结束时粘贴“m”
,将其转换为POSIXct
format(as.POSIXct(paste0(df$Time, "m"), format = "%I:%M %p"), "%T")
#[1] "11:00:00" "11:30:00" "23:00:00" "23:30:00"