作者swilly0906 (史威利哥哥)
看板R_Language
標題[問題] 日期與迴圈問題
時間Sat Sep 9 22:13:32 2017
[問題類型]:
程式諮詢(我想用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){
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)
我直接問了,這邊到底要怎麼改才對??????????????
---------------------------------------------------------------------------
後記: 後來我在Stackoverflow找到類似問題,網友說用ifelse就可以了
60 * hours(timestest) + minutes(timestest) +
ifelse(seconds(timestest)/60<0.5,0,1) #這個output就是我要的答案(所以算解決了)
但我還是想知道,如果我很頑固,一定要用上面的function處理
到底要怎麼寫啊??請各位大大救救我QQ
[關鍵字]
#時間單位以分鐘單位表示
#迴圈loop
#function
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 115.43.83.205
※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1504966415.A.463.html
推 a181w: testtest<-as.numeric(substr(test,1,2))*60+as.numeric(su 09/15 20:23
→ a181w: bstr(test,4,5))+round((as.numeric(substr(test,7,8))+1)/ 09/15 20:23
→ a181w: 60,0) 09/15 20:23