2013-10-04 92 views
1

我在SPSS中構建了每小時的數據。開始時間7:00和結束時間7:59。當我在R中讀到這些數據時,得到的數字如下:57600 & 61140.我如何讓R將這些數值識別爲小時?感謝您的幫助* strong text *在SPSS和R之間轉換時間

回答

1

我想那些在R中得到的數字就是相應的秒數, 02:51:03 = 2 * 60 * 60 + 51 * 60 + 3 = 10263秒。不符合我的猜想的是,7點不是57600秒,但是25200秒(上午)或68400秒(下午)。 57600秒對應於16:00(下午4:00)。

如果這些值實際上是秒,那麼你可以把它們變成類似下面的函數toHour的東西。

toHour <- function(x, seconds = F) # x is a value of seconds 
    { 
    hours <- x %/% 3600 
    secs. <- x %% 3600 
    mins <- secs. %/% 60 
    secs <- secs. %% 60 

    ## add a 0 to single-digit hours/minutes/seconds to make it look nicer 
    mytime <- c(hours, mins, secs) 
    for(i in 1:length(mytime)) 
     { 
     if(length(unlist(strsplit(as.character(mytime[i]), split = ""))) == 1) 
     { 
     mytime[i] <- paste(0, mytime[i], sep = "", collapse = "") 
     } 
     } 
    ## 

    if(seconds == T) 
     { 
     return(paste(mytime[1], mytime[2], mytime[3], sep = ":", collapse = "")) 
     } 
    if(seconds == F) 
     { 
     return(paste(mytime[1], mytime[2], sep = ":", collapse = "")) 
     } 
    } 

    toHour(10263, seconds = T) # check function 
    #[1] "02:51:03" #checked 
    my_seconds <- seq(57600,61140, 60) # I guess you have no seconds in your time and, so, "my_seconds" is the values you get in R 
    sapply(my_seconds, toHour) # turn all values (seconds) to hours:minutes 
    #[1] "16:00" "16:01" "16:02" "16:03" "16:04" ... 
    sapply(my_seconds, toHour, seconds = T) # turn all values (seconds) to hours:minutes:seconds 
    #[1] "16:00:00" "16:01:00" "16:02:00" "16:03:00" ... 

對不起,如果我誤解了這個問題還是我的職位是無關緊要的,但我不能因爲我的低信譽要求在評論細節。編輯:toHour返回字符值。下一步是:

library(chron) 
    chron(times. = sapply(my_seconds, toHour, seconds = T)) 
    #[1] 16:00:00 16:01:00 16:02:00 16:03:00 16:04:00 ...