作者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://webptt.com/cn.aspx?n=bbs/R_Language/M.1504966415.A.463.html
1F:推 a181w: testtest<-as.numeric(substr(test,1,2))*60+as.numeric(su 09/15 20:23
2F:→ a181w: bstr(test,4,5))+round((as.numeric(substr(test,7,8))+1)/ 09/15 20:23
3F:→ a181w: 60,0) 09/15 20:23