※ 引述《swilly0906 (史威利哥哥)》之銘言:
: [問題類型]:
: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
: [軟體熟悉度]:
: 新手(沒寫過程式,R 是我的第一次)
: [問題敘述]:
: 我有一個工作的raw data
: 其中有一個column是時間(小時:分鐘:秒)
: 現在我想把時間全部變成以分鐘表示
: 且超過(含)30秒以上,強制進位一分鐘
: [程式範例]:
: library(chron)
: test <- c("01:11:28", "01:01:30", "02:32:31","00:30:42")
: timestest <- times(test)
: 60 * hours(timestest) + minutes(timestest) + round(seconds(timestest)/60)
: #這個ouput輸出的vector,就是我要的樣式,結果我突然發現round(0.5)竟然不會進位成1
: #所以我只好寫迴圈了(但我是新手,以前根本沒碰過迴圈就是了...)
round1 <- function(x){
a <- vector("integer", length(x))
for(i in seq_along(x)) {
if(x[i] < 0.5){
a[i] <- floor(x[i])
} else if(x[i] >= 0.5 & x[i] <= 1){
a[i] <- ceiling(x[i])
}
}
return(a)
}
# 我不熟chron這個套件,但是用data.table應該是差不多意思
library(data.table)
times <- c("01:11:28", "01:01:30", "02:32:31","00:30:42")
timestest <- as.ITime(times)
60 * hour(timestest) + minute(timestest) + round1(second(timestest)/60)
# [1] 71 62 153 31
: round1 <- function(x){
: for(i in 1:length(x)){
: if(x[i]<0.5){
: a <- floor(x[i])
: }
: else if(x[i]>=0.5 & x[i]<=1){
: a<- ceiling(x[i])
: }
: else{
: a <- 1
: }
: print(a)
: }
: }
: 60 * hours(timestest) + minutes(timestest) + round1(seconds(timestest)/60)
: 結果發現output出現錯誤(應該說不是我要的output)
: 我直接問了,這邊到底要怎麼改才對??????????????
: