2017-04-20 10 views
5

मुझे tidyr पैकेज से इकट्ठा() फ़ंक्शन के साथ कोई समस्या है।tidyr के साथ त्रुटि :: इकट्ठा() जब मेरे पास अद्वितीय नाम हैं

sample 
# A tibble: 5 × 6 
    market_share  Y2012  Y2013  Y2014  Y2015  Y2016 
     <chr>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl> 
1   KAB 0.23469425 0.23513725 0.23187590 0.22940831 0.22662625 
2   BGD 0.21353096 0.21352769 0.20910574 0.20035900 0.19374223 
3   NN 0.16891699 0.16204919 0.16272993 0.16388675 0.16154017 
4   OG 0.07648682 0.07597078 0.07945966 0.07780233 0.08069057 
5   Ha 0.05092648 0.05480555 0.06434457 0.07127716 0.08054208 

अगर मैं कोशिश:

sample2 <- gather(sample, market_share, period, Y2012:Y2016) 
Error: Each variable must have a unique name. 
Problem variables: 'market_share' 

हालांकि, प्रत्येक चर एक अनन्य नाम होना प्रतीत होता है।

Ha KAB BGD NN OG 
    1 1 1 1 1 

यह एक आम मुद्दा लोग इकट्ठा के साथ किया है प्रतीत होता है, लेकिन मैं इसे नहीं मिलता है।

उत्तर

5

दूसरा और तीसरा तर्क आउटपुट में बनाए जाने के लिए कुंजी और मूल्य कॉलम का नाम है। एक ही नाम के साथ दो कॉलम होने के बावजूद और tidyr या dplyr के अन्य कार्यों के साथ अच्छी तरह से काम नहीं करता है। मैं नए कॉलम के लिए अन्य नाम देने का सुझाव देता हूं। इसलिए, आप की कोशिश कर सकते हैं:

sample2 <- gather(sample, period, value, Y2012:Y2016) 
+0

अच्छा। मैंने सोचा कि त्रुटि डेटाफ्रेम के क्षेत्रों में डुप्लिकेट मानों को सिंगल किया गया है। मेरे साथ नहीं हुआ मैं funciton के साथ नाम डुप्लिकेट कर रहा था। धन्यवाद! – Prometheus

1

त्रुटि संदेश आपको बताता है कि आप एक नया कॉलम market_share बनाने की कोशिश कर रहे हैं, लेकिन यह पहले से मौजूद है। आपको दूसरे स्थान पर period डालना होगा क्योंकि वह कॉलम है जिसे आप बनाने का प्रयास कर रहे हैं।

df1<-read.table(text="market_share  Y2012  Y2013  Y2014  Y2015  Y2016 
KAB 0.23469425 0.23513725 0.23187590 0.22940831 0.22662625 
BGD 0.21353096 0.21352769 0.20910574 0.20035900 0.19374223 
NN 0.16891699 0.16204919 0.16272993 0.16388675 0.16154017 
OG 0.07648682 0.07597078 0.07945966 0.07780233 0.08069057 
Ha 0.05092648 0.05480555 0.06434457 0.07127716 0.08054208",header=TRUE, stringsAsFactors=FALSE) 

library(tidyr)  
gather(df1, period,market_share) 

    market_share period market_share 
1   KAB Y2012 0.23469425 
2   BGD Y2012 0.21353096 
3   NN Y2012 0.16891699 
4   OG Y2012 0.07648682 
5   Ha Y2012 0.05092648 
6   KAB Y2013 0.23513725 
7   BGD Y2013 0.21352769 
8   NN Y2013 0.16204919 
9   OG Y2013 0.07597078 
10   Ha Y2013 0.05480555 
0

जब अपने डेटा को देखते हुए ऐसा लगता है कि यदि आपके डेटा में tibble वस्तु (देखें Tibble :: Tibble) है। लेकिन gather को डेटा.फ्रेम की आवश्यकता है। एक data.frame करने के लिए अपने ऑब्जेक्ट को बदलने के लिए प्रयास करें:

sample2 <- gather(data.frame(sample),market_share, period, Y2012:Y2016)

यह आपकी समस्या का समाधान करना चाहिए।

उदाहरण:

library(tibble) 
sample <- read.table(text="market_share Y2012 Y2013 Y2014 Y2015 Y2016 
KAB 0.23469425 0.23513725 0.23187590 0.22940831 0.22662625 
BGD 0.21353096 0.21352769 0.20910574 0.20035900 0.19374223 
NN 0.16891699 0.16204919 0.16272993 0.16388675 0.16154017 
OG 0.07648682 0.07597078 0.07945966 0.07780233 0.08069057 
Ha 0.05092648 0.05480555 0.06434457 0.07127716 0.08054208", 
header=TRUE, stringsAsFactors=FALSE) 

sample <- as_tibble(sample) 
sample 

# A tibble: 5 x 6 
    market_share  Y2012  Y2013  Y2014  Y2015  Y2016 
     <chr>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl> 
1   KAB 0.23469425 0.23513725 0.23187590 0.22940831 0.22662625 
2   BGD 0.21353096 0.21352769 0.20910574 0.20035900 0.19374223 
3   NN 0.16891699 0.16204919 0.16272993 0.16388675 0.16154017 
4   OG 0.07648682 0.07597078 0.07945966 0.07780233 0.08069057 
5   Ha 0.05092648 0.05480555 0.06434457 0.07127716 0.08054208 

sample2 <- gather(sample, period, result, Y2012:Y2016) # Does not work 
Error: Column 'market_share' must have a unique name 

यह काम नहीं करता लेकिन यदि आप इसे एक data.frame में बदलने के लिए, यह काम करता है:

sample2 <- sample2 <- gather(data.frame(sample), period, result, Y2012:Y2016) # works perfect` 
sample2 
     market_share period  result 
1   KAB Y2012 0.23469425 
2   BGD Y2012 0.21353096 
3   NN Y2012 0.16891699 
4   OG Y2012 0.07648682 
5   Ha Y2012 0.05092648 
6   KAB Y2013 0.23513725 
... 
संबंधित मुद्दे