2016-01-18 7 views
11

मुझे एक तालिका बनाना है जिसमें मेरे डेटा फ्रेम में कई कॉलम की आवृत्ति है। मैं नीचे अपने डेटा फ्रेम का हिस्सा कॉपी कर रहा हूं।आवृत्ति तालिका उत्पन्न करने के लिए dplyr का उपयोग कैसे करें

तालिका में रंग में "लाल" और लिंग में "एफ" की आवृत्ति (दोनों एन और%) होना चाहिए।

मुझे लगता है कि dplyr पैकेज ऐसा कर सकता है लेकिन मैं इसे समझ नहीं सकता।

हैं- टिप्पणी प्रति

 
    RespondentID Color  Gender 
1  1503   Red   F  
2  1653   NA   M 
3  1982   Red   F 
4  4862   Red   NA 
15 4880   Blue   M 

+1

क्या आप – rawr

+1

कितने कॉलम की कोशिश की थी? आपके मामले में एक साधारण 'टेबल' या 'prop.table' करेगा। –

+0

मेरे पास दो अलग-अलग डेटा सेट के लिए लगभग 10 कॉलम हैं। मैं इन दो डेटासेट में रुझानों के बीच अंतर दिखाते हुए एक बारप्लॉट बनाने के लिए प्रत्येक चर (कॉलम) के लिए संख्या (गणना और%) प्राप्त करने की उम्मीद कर रहा हूं। – Rooz

उत्तर

16
library(dplyr) 

df %>% 
    count(Color, Gender) %>% 
    mutate(prop = prop.table(n)) 

# Source: local data frame [4 x 4] 
# Groups: Color [3] 
# 
# Color Gender  n  prop 
# (fctr) (fctr) (int)  (dbl) 
# 1 Blue  M  1 1.0000000 
# 2 Red  F  2 0.6666667 
# 3 Red  NA  1 0.3333333 
# 4  NA  M  1 1.0000000 

अद्यतन कर रहा है धन्यवाद - यदि आप अलग से प्रत्येक चर देखें करना चाहते हैं, तो आपको पहले dataframe को पुनर्व्यवस्थित करने की आवश्यकता होगी। आप tidyr साथ ऐसा कर सकते हैं:

library(tidyr) 
library(dplyr) 

gather(df, "var", "value", -RespondentID) %>% 
    count(var, value) %>% 
    mutate(prop = prop.table(n)) 

# Source: local data frame [6 x 4] 
# Groups: var [2] 
# 
#  var value  n prop 
# (fctr) (chr) (int) (dbl) 
# 1 Color Blue  1 0.2 
# 2 Color Red  3 0.6 
# 3 Color NA  1 0.2 
# 4 Gender  F  2 0.4 
# 5 Gender  M  2 0.4 
# 6 Gender NA  1 0.2 
+0

मैं स्तंभ कॉलम में लाल रंग की आवृत्ति की गणना करना चाहता हूं और कॉलम लिंग में महिला अलग से गणना करना चाहता हूं। ये कॉलम स्वतंत्र चर हैं। मेरे पास दो अलग-अलग डेटा सेट के लिए लगभग 10 कॉलम हैं। मैं उम्मीद कर रहा हूं कि इन दो डेटासेट में रुझानों के बीच अंतर दिखाते हुए एक बारप्लॉट बनाने के लिए प्रत्येक चर (कॉलम) के लिए संख्याएं (गणना करें और%) प्राप्त करें। – Rooz

+0

@Rooz ने आपकी टिप्पणी के प्रति मेरा जवाब अपडेट किया। शायद आपको एक नया प्रश्न पोस्ट करना चाहिए जो कि अंत खेल होने की साजिश के अधिक विशिष्ट होने के कारण है क्योंकि उस विशिष्ट प्रश्न और नतीजे पर हमला करने के बेहतर तरीके हैं। इसके अलावा, ऐसा लगता है कि प्रदान किए गए नमूना डेटा में प्रश्न में डेटा का सटीक रूप से प्रतिनिधित्व नहीं किया जाता है - शायद आपको एक पुन: उत्पादित उदाहरण और/या नमूना डेटा सेट बनाने की कोशिश करनी चाहिए जो आपके डेटासेट की अनूठी चुनौतियों को सबसे अच्छी तरह दर्शाती है। – JasonAizkalns

+0

मैं आपके द्वारा पोस्ट किए गए भविष्य के प्रश्नों के लिए आपके सुझाव का पालन करूंगा। आपकी मदद के लिए बहुत बहुत धन्यवाद। – Rooz

संबंधित मुद्दे