0
데이터 숫자의 숫자로 변환하려는 문자 형식의 데이터 숫자가 있습니다. 그러나 문제는 숫자가 매우 긴 것을 내가는 data.table의 examle 처음 5 개 요소의 R.에서 반올림없이 모든 숫자를 유지하려면 : 나는 변환하는 기능을 썼다문자에서 숫자로 변환 할 때 반올림 오류가 발생했습니다.
> TimeO[1]
[1] "20110630224701281482"
> TimeO[2]
[1] "20110630224701281523"
> TimeO[3]
[1] "20110630224701281533"
> TimeO[4]
[1] "20110630224701281548"
> TimeO[5]
[1] "20110630224701281762"
문자에서 숫자로 :
convert_time_fast <- function(tim){
b <- tim - tim%/%10^12*10^12
# hhmmssffffff
ms <- b%%10^6; b <-(b-ms)/10^6
ss <- b%%10^2; b <-(b-ss)/10^2
mm <- b%%10^2; hh <-(b-mm)/10^2
# if hours>=22, subtract 24 (previous day)
hh <- hh - (hh>=22)*24
return(hh+mm/60+ss/3600+ms/(3600*10^6))
}
그러나 반올림은 R에서 발생하므로 데이터 포인트가 이제는 같은 시간을 갖습니다. 변환 후 처음 5 개 요소를 확인하십시오 :
TimeOC <--convert_time_fast(as.numeric(TimeO))
> TimeOC[1]
[1] 1.216311
> TimeOC[2]
[1] 1.216311
> TimeOC[3]
[1] 1.216311
> TimeOC[4]
[1] 1.216311
> TimeOC[5]
[1] 1.216311
이 문제를 이해하면 도움이 될 것입니다.
문제는 내가 데이터 포인트를 그래프로 노력하고 내가 그것을 all.equal 않을 경우 같은 시간에 지점이 서로 – CheddaShredda
위에 그려되고 있다는 점이다 TRUE라고 말하면 실제 변환 함수에 문제가 있다고 생각합니다. – CheddaShredda
이 문제도 발생했습니다. 소수 자릿수가 많은 문자를 숫자로 변환합니다. 소수 자리와 그 이후의 문제가 없어집니다. 대답이있는 사람을위한 대규모 upvote. :-) – roman