作者joson4921 (特务)
看板R_Language
标题[问题] 取值:落於时间范围内 且 符合其他条件
时间Thu Feb 2 21:36:45 2017
文章分类提示:问题
[问题类型]:
程式谘询(我想用R 做某件事情,但是我不知道要怎麽用R 写出来)
[软体熟悉度]:
入门(写过其他程式,只是对语法不熟悉)
[问题叙述]:
请简略描述你所要做的事情,或是这个程式的目的
板上各位大大好
我想请问如果 data2 跟 data1有以下2个/3个变数,例如长得像以下那样:
data1
Goback Bus_No. DepartureTime
0 1 5:50
0 2 6:10
0 3 6:30
0 4 6:50
0 5 7:10
1 1 6:00
1 2 6:20
1 3 6:40
1 4 7:00
1 5 7:20
data2 预期结果"Bus_No."新增於data2内如下:
DepartureTime Goback Bus_No.
2015-12-25 05:51:20 0 1
2015-12-26 06:53:30 0 4
2015-12-27 06:22:58 1 2
2015-12-28 05:58:32 1 1
2015-12-29 07:09:24 0 5
我想做的事情是根据data2里的 "DepartureTime" 和 "Goback" 这两个变数数,
去找data1里面对应的"Bus_No."传回data2,并新增一个栏位"Bus_number"储存结果
例: data2资料集内第四笔: 2015-12-28 05:58:32 Goback=1
则查找data1资料集内,
符合 Goback为1 且 与 DepartureTime 最接近 05:58:32者为
Goback Bus_No. DepartureTime
1 1 6:00
故 2015-12-28 05:58:32 且 Goback=1,预期结果Bus_No.应为"1"
我用上次板上大大教的foverlaps函数去试着改写,
但弄了几天一直没办法把Goback的判断式加入,想请教大大我判断应该怎麽写才对
data2[, foverlaps( Tmp_calculation, BusScedule_51_difftime )] %>%
.[, Bus_No. := data1$Bus_No. ] %>%
_________________
↓
Goback的判断条件应该是加再这边,但我用中括号取值弄不出我想要的结果
以上,若有其他方法可用也请不吝分享
再麻烦请板上大大协助指点,感谢>"<
[关键字]:
foverlaps
match 或者 %in% (?)
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.113.119.164
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1486042611.A.44D.html
※ 编辑: joson4921 (140.113.119.164), 02/02/2017 21:37:23
1F:→ cywhale: 你要找最靠近的应该直接which.min(time diff)非foverlap 02/02 23:52
2F:→ cywhale: 你这里的Bus_No是要当筛选条件,而非用:= 另立新栏或新值 02/02 23:56
3F:→ cywhale: 看错 GoBack...啊 我试回一篇好了... 02/03 00:00