Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不正确地替换R中的字符串_R_String_Time_Replace_Stringr - Fatal编程技术网

不正确地替换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无法将这些

我需要在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
base
R无法将这些日期转换为正确的格式。因此,我转向了笨重的
str\u replace\u all
函数(从package
stringr
)来转换大数据帧中的所有时间:>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"