अगर वहाँ एक बेहतर तरीका है मुझे यकीन नहीं हैकहो कि मैं क्या पूछ रहा हूं। मूल रूप से मेरे पास मार्ग डेटा है (उदाहरण के लिए LAX-BWI, SFO-JF, आदि)। मैं इसे डमी करना चाहता हूं इसलिए मेरे पास मूल रूप से हर हवाई अड्डे के लिए 1 होगा जो एक उड़ान को छूता है (दिशात्मक रूप से "टी")। इसलिए LAX-BWI BWI-LAX के समान है)।
तो उदाहरण के लिए:
ROUTE | OFF | ON |
LAX-BWI|10:00|17:00|
LAX-SFO|11:00|13:00|
BWI-LAX|18:00|01:00|
BWI-SFO|15:00|20:00|
हो जाता है
BWI|LAX|SFO| OFF | ON |
1 | 1 | 0 |10:00|17:00|
0 | 1 | 1 |11:00|13:00|
1 | 1 | 0 |18:00|01:00|
1 | 0 | 1 |15:00|20:00|
मैं या तो स्ट्रिंग "BWI-LAX" के रूप में डेटा में खींच सकता हूं या दो कॉलम मूल और गंतव्य हो सकते हैं जिनके मान स्ट्रिंग "BWI" और "LAX" हैं।
निकटतम चीज जो मैं सोच सकता हूं, वह इसे डमी कर रही है, लेकिन अगर मैं जो चाहता हूं उसके लिए एक वास्तविक शब्द है, तो कृपया मुझे बताएं। मुझे ऐसा लगता है कि इसका उत्तर दिया गया है, लेकिन मैं सोच सकता हूं कि इसे कैसे खोजा जाए।
उत्तर:
जवाब के लिए 0 № 1की कोई जरूरत नहीं है for loop
. data.frames
केवल सूचियाँ हैं ताकि हम सभी तत्वों को एक बार में निर्दिष्ट कर सकें:
cities <- unique(unlist(strsplit(df$ROUTE, "-")))
df[, cities] <- lapply(cities, function(x) as.numeric(grepl(x, df$ROUTE)))
# ROUTE OFF ON LAX BWI SFO
#1 LAX-BWI 10:00 17:00 1 1 0
#2 LAX-SFO 11:00 13:00 1 0 1
#3 BWI-LAX 18:00 01:00 1 1 0
#4 BWI-SFO 15:00 20:00 0 1 1
The ROUTE
कॉलम गणना के बाद ड्रॉप करने के लिए काफी आसान है यदि आप "नहीं चाहते हैं
उत्तर № 2 के लिए 1
किसी ने सिर्फ एक बहुत ही सवाल पूछा तो मैं "से मेरा जवाब कॉपी करेंगे यहाँ:
allDest <- sort(unique(unlist(strsplit(dataFrame$ROUTE, "-"))))
for(i in allDest){
dataFrame[, i] <- grepl(i, dataFrame$ROUTE)
}
यह सेट में हर हवाई अड्डे के लिए एक नया कॉलम बनाएगा और अगर कोई उड़ान किसी हवाई अड्डे को छूती है तो यह सच या झूठी के साथ संकेत देगा।यदि आप 0 और 1 के बजाय आप कर सकते हैं चाहते हैं:
allDest <- sort(unique(unlist(strsplit(dataFrame$ROUTE, "-"))))
for(i in allDest){
dataFrame[, i] <- grepl(i, dataFrame$ROUTE)*1
}
सच * 1 है 1 झूठी * 1 0 है।