我对r很新,所以想知道是否有人可以帮助我收到的错误信息。
我有一个data.frame AUC_sheet
,其中包含POSIXct中的AUC_sheet$sys_time
列,表示在操作过程中获取血压的时间。
我想将AUC_sheet
转换出POSIXct,以便在曲线计算的后续区域中获得准确的结果。我已使用以下for循环执行转换:
for(i in 1:length(AUC_sheet$sys_time)){
AUC_sheet$sys_time[i] <- as.numeric(difftime(time1 = AUC_sheet$sys_time[1],
time2 = AUC_sheet$sys_time[i], units = "hours"))
}
但我不断收到如下错误消息
Error in as.POSIXct.numeric(value) : 'origin' must be supplied
我已尝试使用origin = "1970-01-01"
,但它告诉我这是一个未使用的参数。
我做错了是否有明显的明显之处?
提前致谢,对不起,如果我没有提供足够的数据,我可以根据需要发布更多内容
EDIT AUC_sheet $ sys_time看起来像这样
sys_value sys_time
<dbl> <time>
1 85 2013-08-28 12:48:24
2 NA 2013-08-28 12:48:39
3 NA 2013-08-28 12:48:54
4 NA 2013-08-28 12:49:08
5 NA 2013-08-28 12:49:24
6 170 2013-08-28 12:49:38
7 150 2013-08-28 12:49:54
8 167 2013-08-28 12:50:09
9 175 2013-08-28 12:50:24
10 167 2013-08-28 12:50:39
# ... with 549 more rows
答案 0 :(得分:1)
您的问题不是as.numeric
来电。问题是您正在尝试将该调用的结果写入一个POSIXct列的列。因此,R会尝试将其转换为正确的格式,并且失败,因为转换方法需要原点。
如果您写入新列(或者更好的是,将for循环写为单个矢量化操作以避免该问题),那么您应该没有问题。
# make up some dummy data for testing
AUC = data.frame(sys_value = 1:100, sys_time = as.POSIXct(Sys.time() + 1:100))
for(i in 1:length(AUC$sys_time)){
AUC$sys_time[i] <- as.numeric(difftime(time1 = AUC$sys_time[1],
time2 = AUC$sys_time[i], units = "hours"))
} # this doesn't work, because you're mixing data types in the sys_time column
for(i in 1:length(AUC$sys_time)){
AUC$sys_time_diff[i] <- as.numeric(difftime(time1 = AUC$sys_time[1],
time2 = AUC$sys_time[i], units = "hours"))
} # this works, because the numeric data isn't being added to a time column