R_Language 板


LINE

文章分类提示: - 问题: 当你想要问问题时,请使用这个类别。 [问题类型]: 程式谘询(我想用R 做某件事情,但是我不知道要怎麽用R 写出来) [软体熟悉度]: 入门(写过其他程式,只是对语法不熟悉) [问题叙述]: 请简略描述你所要做的事情,或是这个程式的目的 如标题,我想做的是列与列的时间计算(以本例来说就是找不同车次发车时间间隔) 手边有一份端点站的发车时间表如下所示 表定6:00~8:00「每隔10~20分不等」(去/返程)对开出一班车 我想要的结果是根据每个车次的发车时间找出一个range,用来判断实际发车时间应属哪一 车次 先假设这个range的预期结果是前後车次发车时间的中间值(5/5分配,之後可能会用2/8分) : (去/返程) (表定发车时间) (车次编号)    (预期结果↓) Goback Schedule_DepartTime Bus_No. rid1 qid1 start1 end1 difference 0 06:00 1 1 0 06:00 08:00 - 0 06:20 2 2 1 06:20 06:00 20min 0 06:35 3 3 2 06:35 06:20 15min 0 06:50 4 4 3 06:50 06:35 15min 0 07:00 5 5 4 07:00 06:50 10min 0 07:10 6 6 5 07:10 07:00 10min 0 07:25 7 7 6 07:25 07:10 15min 0 07:40 8 8 7 07:40 07:25 15min 0 08:00 9 9 8 08:00 07:40 20min 1 06:00 1 10 0 --- 1 06:20 2 11 1 --- 1 06:35 3 12 2 --- 1 06:50 4 13 3 --- 因两端点发车时间相同故 1 07:00 5 14 4 --- Goback=1时之预期结果应 1 07:10 6 15 5 --- 与Goback=0之预期结果相 同 1 07:25 7 16 6 --- 1 07:40 8 17 7 --- 1 08:00 9 18 8 --- ###先新增column "rid1" 和 "qid1",时间相减时要用 式1 BusScedule_51[, Schedule_DepartTime :=      as.POSIXct(strptime(strptime( Schedule_DepartTime, "%H:%M"))] %>% 式2 Schedule_DepartTime, "%H:%M"))] %>%   .[ , c("rid1","qid1") := list( .I, {.I - .I[1L]}), by = .(Goback)] ###用上面2式新增的 "rid1" 和 "qid1" column跑以下式子, ###但出来的答案跟预期的答案不一样 式3 BusScedule_51[ , start1 := Schedule_DepartTime[Bus_No.] ] 式4 BusScedule_51[ , end1 := Schedule_DepartTime[-qid1] ] 式5 BusScedule_51[ , difference := start1 - end1 ] 问题: 我知道式4里面写 [-qid1] 会抓让过来的时间资料通通下移, 我想利用这个特性来作时间加减,但 qid1=0 的情况要怎麽处理difference我还没想到.. 总之是拿之前写的code改,但是出来的结果却变成下面那样: (请注意"---"右边end1那一排): (去/返程) (表定发车时间) (车次编号) (预期结果↓) Goback Schedule_DepartTime Bus_No. rid1 qid1 start1 end1 difference 0 06:00 1 1 0 06:00 08:00 - 0 06:20 2 2 1 06:20 06:00 20min 0 06:35 3 3 2 06:35 06:20 15min 0 06:50 4 4 3 06:50 06:35 15min 0 07:00 5 5 4 07:00 06:50 10min 0 07:10 6 6 5 07:10 07:00 10min 0 07:25 7 7 6 07:25 07:10 15min 0 07:40 8 8 7 07:40 07:25 15min 0 08:00 9 9 8 08:00 07:40 20min 1 06:00 1 10 0 --- 08:00 1 06:20 2 11 1 --- 08:00 1 06:35 3 12 2 --- 06:00 1 06:50 4 13 3 --- 06:20 1 07:00 5 14 4 --- 06:35 1 07:10 6 15 5 --- 06:50 1 07:25 7 16 6 --- 07:00 1 07:40 8 17 7 --- 07:10 1 08:00 9 18 8 --- 07:20 如上所示,「资料出现在不该出现的位置」,搞了快2天还是搞不懂到底是哪里写错了 请求板上大大们伸出援手...先谢谢大家orz [程式范例]: [环境叙述]: 请提供 sessionInfo() 的输出结果, 里面含有所有你使用的作业系统、R 的版本和套件版本资讯, 让版友更容易找出错误 [关键字]: 选择性,也许未来有用 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.113.136.219
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1483226505.A.DDD.html ※ 编辑: joson4921 (140.113.136.219), 01/01/2017 07:23:41
1F:→ cywhale: 如果只算时间差 diff:=start-shift(start),by=.(Goback)01/01 08:21
好的,待会来试试@@ ※ 编辑: joson4921 (114.136.66.35), 01/01/2017 08:24:56
2F:→ celestialgod: 建议拆成两张表做,两张表都用同一个函数处理 01/01 14:04
3F:→ celestialgod: 之後再合并 01/01 14:04
4F:→ celestialgod: 然後strptime跟as.POSIXct的performance很差 01/01 14:04
5F:→ celestialgod: 我也会建议在前处理就做好,中间不要再转换 01/01 14:05
6F:→ celestialgod: 如果拆成两张做,我觉得你的问题就可以解决了 01/01 14:05
7F:→ celestialgod: 用split(data.table, by = "GoBack) 01/01 14:05
8F:→ celestialgod: 然後配上 lapply(split_list, function(dt) ...) 01/01 14:06
9F:→ celestialgod: 最後再 rbindlist变回同一张表 01/01 14:06
10F:→ joson4921: c大可能是我用的方法不对,我查了一堆lapply的用法但都 01/02 17:57
11F:→ joson4921: 没讲到要怎麽做时间相减..转回dataframe的方法还在看.. 01/02 17:58
12F:→ celestialgod: 我不是说用lapply做时间相减,我意思是你这里 01/02 20:23
13F:→ celestialgod: 拆成list个别处理可以比较简单 01/02 20:23
14F:→ celestialgod: 时间相减,我之前不是demo过了吗? 01/02 20:24
15F:→ celestialgod: 我还是建议就给一个虚拟日期 然後相减就好啦 01/02 20:24
16F:→ celestialgod: #1ONw30Eu 01/02 20:24
17F:→ joson4921: 喔喔!!是我误会了..orz 这就来弄,感谢!! 01/02 20:38
18F:→ joson4921: 死了...能不能请c大推荐用list处理资料的文...我之前都 01/02 21:16
19F:→ joson4921: 是处理dataframe, list好像不给用 := 处理... 01/02 21:17
20F:→ joson4921: split完之後就卡了,R不给我用 := 後面根本没办法写.. 01/02 21:30
21F:→ celestialgod: 把置底的翻转教室玩过一遍吧 01/03 00:11
22F:→ joson4921: 好的,谢谢c大 01/03 00:25







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP