मेरे पास एक बाइक के प्रक्षेपण का एक नमूना डेटासेट है। मेरे उद्देश्य, यह पता लगाने की औसत पर है, समय की राशि है कि स्टेशन का दौरा करने के बी के बीच में खामियोंअगले होने वाले रिकॉर्ड का सूचकांक
अब तक, मैं कर पाए हैं बस के साथ डाटासेट ऑर्डर करने के लिए:
test[order(test$starttime, decreasing = FALSE),]
और पाते हैं जहां start_station
और end_station
बराबर बी
which(test$start_station == 'B')
which(test$end_station == 'B')
अगले भाग है, जहां मैं मुसीबत में पड़ की पंक्ति सूचकांक। आदेश समय की गणना करने के लिए कि खामियों जब बाइक स्टेशन बी में है के बीच में, हम जहां start_station = "B"
(बाइक छोड़ देता है) के बीच difftime()
और रिकॉर्ड होने वाली अगली जहां end_station= "B"
, भले ही रिकॉर्ड में होने वाला रखना चाहिए में एक ही पंक्ति (पंक्ति 6 देखें)।
नीचे डाटासेट का उपयोग करना, हम जानते हैं कि बाइक 7:30:00
और स्टेशन बी, 18:00:00
के बीच 30 मिनट और स्टेशन बी के 18:30:00
बाहर, और 19:00:00
के बीच 210 मिनट और स्टेशन बी के 22:30:00
बाहर, के 16:00:00
बाहर के बीच 510 मिनट तक जो औसत 250 minutes.
difftime()
का उपयोग करके आर में इस आउटपुट को पुन: पेश कैसे किया जाएगा?
> test
bikeid start_station starttime end_station endtime
1 1 A 2017-09-25 01:00:00 B 2017-09-25 01:30:00
2 1 B 2017-09-25 07:30:00 C 2017-09-25 08:00:00
3 1 C 2017-09-25 10:00:00 A 2017-09-25 10:30:00
4 1 A 2017-09-25 13:00:00 C 2017-09-25 13:30:00
5 1 C 2017-09-25 15:30:00 B 2017-09-25 16:00:00
6 1 B 2017-09-25 18:00:00 B 2017-09-25 18:30:00
7 1 B 2017-09-25 19:00:00 A 2017-09-25 19:30:00
8 1 А 2017-09-25 20:00:00 C 2017-09-25 20:30:00
9 1 C 2017-09-25 22:00:00 B 2017-09-25 22:30:00
10 1 B 2017-09-25 23:00:00 C 2017-09-25 23:30:00
यहाँ नमूना डेटा है: के रूप में यह होता है क्रम में पूछा
> dput(test)
structure(list(bikeid = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1), start_station = c("A",
"B", "C", "A", "C", "B", "B", "А", "C", "B"), starttime = structure(c(1506315600,
1506339000, 1506348000, 1506358800, 1506367800, 1506376800, 1506380400,
1506384000, 1506391200, 1506394800), class = c("POSIXct", "POSIXt"
), tzone = ""), end_station = c("B", "C", "A", "C", "B", "B",
"A", "C", "B", "C"), endtime = structure(c(1506317400, 1506340800,
1506349800, 1506360600, 1506369600, 1506378600, 1506382200, 1506385800,
1506393000, 1506396600), class = c("POSIXct", "POSIXt"), tzone = "")), .Names = c("bikeid",
"start_station", "starttime", "end_station", "endtime"), row.names = c(NA,
-10L), class = "data.frame")
पहला चरण 'लाइब्रेरी (डेटा.table) जैसे कुछ प्रारूप में बदल जाएगा; mtest = पिघल (setDT (परीक्षण), आईडी = "बाइकिड", माप = पैटर्न ("_ स्टेशन", "समय"), variable.name = "घटना", value.name = c ("स्टेशन", "समय")); mtest [। (कारक (1: 2), सी ("प्रारंभ", "अंत")), =। (घटना), घटना: = i.V2]; सेटकी (mtest, बाइकिड, समय) ', लेकिन मुझे यकीन नहीं है कि उसके बाद सबसे अच्छा तरीका है। – Frank