में एक अद्वितीय (एनवाईसी एमटीए टर्नस्टाइल) डेटासेट को पुनर्गठित करना मेरे पास एक अद्वितीय दिखने वाला डेटासेट (एनवाईसी एमटीए टर्नस्टाइल डेटा) है जिसे मुझे कुछ विश्लेषण करने के लिए एक निश्चित तरीके से फिर से व्यवस्थित करने की आवश्यकता है। मैंने कोड लिखा है जो काम करता है लेकिन बहुत प्रभावी नहीं है क्योंकि यह एक बहुत बड़ा डेटासेट है। मुझे उम्मीद है कि कोई बेहतर तरीका सुझा सकता है।आर
प्रश्न में डेटासेट में 43 कॉलम हैं। कॉलम 1-3 अद्वितीय पहचानकर्ता हैं (यानी एक विशिष्ट स्टेशन पर टर्नस्टाइल)। फिर स्तंभ 4-8 मीट्रिक समय, मीट्रिक प्रकार, प्रविष्टियों और फिर बाहर निकलने की पहचान करता है। 9-13 और फिर शेष स्तंभ 43 तक एक ही पैटर्न का पालन करते हैं। डेटासेट बदसूरत है इसलिए मैं इसे यहां पोस्ट नहीं करना चाहता हूं लेकिन आप इसे नीचे दिए गए लिंक में पा सकते हैं। आपको पूर्व 10/18/14 डेटा देखना होगा।
http://web.mta.info/developers/turnstile.html
#Vector of column numbers that identifies the break
a <- c(4, 9, 14, 19, 24, 29, 34, 39)
#The actual loop to re-sort the data
for (i in 1:nrow(data)) {
for (j in 1:length(a)) {
if (j == 8){ all <- rbind(all, cbind(data[i, 1:3], data[i, a[j]:43])) }
else { all <- rbind(all, cbind(data[i, 1:3], data[i,a[j]:(a[j+1]-1)])) } } }
इस सब के अंतिम परिणाम कुछ है कि इस तरह दिखता है है।
1 2 3 1 2 3 4 5
5083 H026 R137 00-00-00 10-04-14 00:00:00 REGULAR 4072851 10491832
50831 H026 R137 00-00-00 10-04-14 04:00:00 REGULAR 4072918 10492356
50832 H026 R137 00-00-00 10-04-14 08:00:00 REGULAR 4073125 10492613
50833 H026 R137 00-00-00 10-04-14 12:00:00 REGULAR 4073511 10493116
50834 H026 R137 00-00-00 10-04-14 16:00:00 REGULAR 4073820 10493877
50835 H026 R137 00-00-00 10-04-14 20:00:00 REGULAR 4074140 10494817
यह काम करता है, लेकिन मुझे पता है कि ऐसा करने के लिए वहां एक और अधिक प्रभावी तरीका है। किसी भी मदद को बहुत, बहुत सराहा जाएगा!
संपादित करें:
मैं के रूप में मैं कुछ महत्वपूर्ण टुकड़े है कि इस के लिए दृष्टिकोण बदल सकते हैं बाहर छोड़ दिया इस के लिए थोड़ा और जोड़ना चाहिए। Read.csv के साथ डेटा में पढ़ने के बाद मैं केवल कुछ मीटर (कॉलम 2) के साथ डेटा को सब्सक्राइब करता हूं। चूंकि मुझे सुझाव पसंद आया क्योंकि मैंने नीचे देखा गया सबसेट डेटा को एक स्ट्रिंग में रूपांतरित कर दिया है। यह वास्तव में काफी हद तक निष्पादित करता है लेकिन किसी और सुझाव की सराहना की जाएगी!
out1 <- function() {
data <- read.csv(name, header=FALSE)
##Isolate data for stations included in network area
station <- subset(data, V2%in% station_names)
data <- apply(station, 1, paste, collapse=",")
starts <- seq(from=4, to=43, by=5)
new_data <- rbindlist(lapply(strsplit(data, ","), function(x) {
rbindlist(lapply(starts, function(y) {
as.list(x[c(1:3, y:(y+4))])
}))
}))
setnames(new_data, colnames(new_data), c("C.A", "UNIT", "SCP", "DATE", "TIME","DESC", "ENTRIES", "EXIT"))
new_data <- as.data.frame(new_data)
}
यह बहुत अच्छा है। आपके सहयोग के लिए धन्यवाद! –