मैं प्लीयर से आ रहा हूं, मैं dplyr सीख रहा हूं, और मैं xtabs के आउटपुट से (प्रति समूह) कॉलम (प्रति इंटरैक्शन) उत्पन्न करना चाहता हूं।टिडिर फैल फ़ंक्शन स्पैर मैट्रिक्स उत्पन्न करता है जब कॉम्पैक्ट वेक्टर अपेक्षित
संक्षिप्त सारांश:
> xtabs(data=data.frame(P=c(F,T,F,T,F),A=c(F,F,T,T,T)))
A
P FALSE TRUE
FALSE 1 2
TRUE 1 1
अब do(
चाहता है उस में डेटा है: मैं
A B
1 NA
NA 2
हो रही है जब मैं
A B
1 2
xtabs डेटा चाहता था इस तरह दिखता है डेटा फ्रेम, इस तरह:
> xtabs(data=data.frame(P=c(F,T,F,T,F),A=c(F,F,T,T,T))) %>% as.data.frame
P A Freq
1 FALSE FALSE 1
2 TRUE FALSE 1
3 FALSE TRUE 2
4 TRUE TRUE 1
अब मैं कॉलम के साथ एक एकल पंक्ति आउटपुट चाहता हूं जो स्तरों की बातचीत हो। यहाँ मैं के लिए क्या देख रहा हूँ है:
FALSE_FALSE TRUE_TRUE FALSE_TRUE TRUE_FALSE
1 1 2 1
लेकिन बजाय मैं
> xtabs(data=data.frame(P=c(F,T,F,T,F),A=c(F,F,T,T,T))) %>%
as.data.frame %>%
unite(S,A,P) %>%
spread(S,Freq)
FALSE_FALSE FALSE_TRUE TRUE_FALSE TRUE_TRUE
1 1 NA NA NA
2 NA 1 NA NA
3 NA NA 2 NA
4 NA NA NA 1
मिल मैं स्पष्ट रूप से यहाँ कुछ गलतफहमी कर रहा हूँ। मैं यहाँ reshape2 के कोड के बराबर की तलाश में हूँ (स्थिरता के लिए magrittr पाइप का प्रयोग करके):
> xtabs(data=data.frame(P=c(F,T,F,T,F),A=c(F,F,T,T,T))) %>%
as.data.frame %>% # can be omitted. (safely??)
melt %>%
mutate(S=interaction(P,A),value=value) %>%
dcast(NA~S)
Using P, A as id variables
NA FALSE.FALSE TRUE.FALSE FALSE.TRUE TRUE.TRUE
1 NA 1 1 2 1
(ध्यान दें एनए यहाँ क्योंकि मैं इस सरल उदाहरण में एक समूहीकरण चर नहीं है प्रयोग किया जाता है)
अद्यतन - दिलचस्प बात यह है कि एक समूहबद्ध कॉलम जोड़ने से यह ठीक हो जाता है - यह मुझे बताए बिना समूहबद्ध कॉलम (संभावित रूप से row_name से) क्यों संश्लेषित करता है?
> xtabs(data=data.frame(h="foo",P=c(F,T,F,T,F),A=c(F,F,T,T,T))) %>%
as.data.frame %>%
unite(S,A,P) %>%
spread(S,Freq)
h FALSE_FALSE FALSE_TRUE TRUE_FALSE TRUE_TRUE
1 foo 1 1 2 1
यह आंशिक समाधान की तरह लगता है।
[** यह **] (https://github.com/hadley/tidyr/issues/41) एक ही समस्या की तरह लगता है। – Henrik
@ हेनरिक: वास्तव में यह करता है। –
[यह] (http://stackoverflow.com/q/25960394/937932) हैडली द्वारा व्याख्यात्मक टिप्पणी के साथ, विपरीत में एक ही समस्या है। जैसा कि आपने अपने अपडेट में खोजा है, दोनों आउटपुट सही संदर्भ में समझ में आते हैं। जब संदर्भ केवल निहित है, 'फैल() 'अनुमान लगाना है। – nacnudus