कहें कि मेरे पास ऐसे लोगों पर डेटा है जो कई विकल्पों के बीच चयन करते हैं। मेरे पास प्रति व्यक्ति एक पंक्ति है, और मैं प्रति व्यक्ति एक पंक्ति और विकल्प विकल्प चाहता हूं। इसलिए, यदि मेरे पास 10 विकल्प हैं जिनके पास 3 विकल्प हैं, तो अभी मेरे पास 10 पंक्तियां हैं, और मैं 30 होना चाहता हूं।समूहबद्ध चर के प्रत्येक मान के भीतर पूर्ण पंक्तियों को भरने के लिए मैं टिडीर का उपयोग कैसे करूं?
अन्य सभी चरों को प्रत्येक नई पंक्तियों में कॉपी किया जाना चाहिए। इसलिए, उदाहरण के लिए, यदि मेरे पास लिंग के लिए एक चर है, तो यह आईडी के भीतर स्थिर होना चाहिए। (मैं इस तरह से mnlogit
साथ विश्लेषण करने के लिए मेरे सभी डेटा सेट कर रहा हूँ।)
यह स्थिति है कि दो tidyr
काम करता है, complete
और fill
, के लिए डिजाइन किए गए थे की तरह लगता है। एक सरल उदाहरण का उपयोग करें:
library(lubridate)
library(tidyr)
dat <- data.frame(
id = 1:3,
choice = 5:7,
c = c(9, NA, 11),
d = ymd(NA, "2015-09-30", "2015-09-29")
)
dat %>%
complete(id, choice) %>%
fill(everything())
# Source: local data frame [9 x 4]
#
# id choice c d
# (int) (int) (dbl) (time)
# 1 1 5 9 <NA>
# 2 1 6 9 <NA>
# 3 1 7 9 <NA>
# 4 2 5 9 <NA>
# 5 2 6 9 2015-09-30
# 6 2 7 9 2015-09-30
# 7 3 5 9 2015-09-30
# 8 3 6 9 2015-09-30
# 9 3 7 11 2015-09-29
लेकिन यह कुछ समस्या है - डी के मूल्यों को सही ढंग से आगे बढ़ाया गया, लेकिन आईडी 1 से सी के मूल्यों (सही) एनए आईडी के लिए महत्व देता प्रतिस्थापित 2.
मैं वर्कअराउंड की कोशिश कर सकता हूं, जैसे सभी गुम मूल्यों को 99 9 के साथ बदलना, complete
और fill
चला रहा है, और उसके बाद 99 9 को NA के साथ बदलना। (मुझे लगता है कि मुझे दिनांक चर को वर्ण चर में परिवर्तित करना होगा और फिर यदि मैं इस मार्ग पर जाता हूं तो उन्हें दोबारा परिवर्तित कर दूंगा।) लेकिन हो सकता है कि यहां कोई व्यक्ति tidyr
के साथ ऐसा करने के लिए एक साफ तरीके से जानता है?
संपादित करें: वांछित आउटपुट यहाँ है:
# Source: local data frame [9 x 4]
#
# id c d choice
# (int) (dbl) (time) (int)
# 1 1 9 <NA> 5
# 2 1 9 <NA> 6
# 3 1 9 <NA> 7
# 4 2 NA 2015-09-30 5
# 5 2 NA 2015-09-30 6
# 6 2 NA 2015-09-30 7
# 7 3 11 2015-09-29 5
# 8 3 11 2015-09-29 6
# 9 3 11 2015-09-29 7
क्षमा करें, 'समय' को 'पसंद' माना जाना चाहिए। मैं इसे ठीक कर दूंगा। –
एक अद्यतन के रूप में, 'mlogit' में एक फ़ंक्शन है,' mlogit.data' जो इस समस्या को हल करता है। 'mlogit.data (डेटा, पसंद =" पसंद ", आकार =" चौड़ा ") 'वांछित परिणाम भी उत्पन्न करता है। मुझे पता है कि मैंने 'tidyr' समाधान के लिए कहा था, लेकिन, भविष्य के पाठकों के लिए, मैंने सोचा कि यह समाधान भी शामिल करना सहायक हो सकता है। –