2016-11-22 194 views
0

我正在使用csv的調查數據。每一行都是一項個人調查。其中一個問題是「你在海灘參加什麼活動?」。列出的12項活動均有專欄。如果一個採訪者說他們參加了一個活動,那麼csv有一個1,如果他們沒有一個2.我想在ggplot2中創建一個barplot,顯示有多少人蔘與所有活動,然後使用交叉選項卡(性別,地點,年齡等)以供稍後填寫。使用ggplot2一起繪製多個x變量的計數

我在基礎R做到了這一點:

swim.all.13=table(b13$actswim) 
surf.all.13=table(b13$actsurf) 
walk.all.13=table(b13$actwalk) 
relax.all.13=table(b13$actrelx) 
shell.all.13=table(b13$actshell) 
picnic.all.13=table(b13$actpic) 
sun.all.13=table(b13$actsun) 
read.all.13=table(b13$actread) 
fish.all.13=table(b13$actfish) 
work.all.13=table(b13$actwork) 
eat.all.13=table(b13$acteat) 

act.all.13.test=cbind(swim.all.13,surf.all.13,walk.all.13,relax.all.13,shell.all.13,picnic.all.13,sun.all.13,read.all.13,fish.all.13,work.all.13,eat.all.13) 
act.all.13=act.all.13.test[2,] 

barplot(act.all.13,xlab="Activity",ylab="NUmber of Responses",names.arg=" ",legend=c("Swim", "Surf", "Walk", "Relax", "Shell", "Picnic", "Sun", "Read", "Fish", "Work", "Eat"),main="What activities do you engage in while at the beach?") 

這給了我,我要找的表,但看起來完全是垃圾。我喜歡在GGPLOT2圖形,這是調查數據的其餘部分被繪製

Screenshot of CSV I'm working with

+0

能否請您提供一個例子集? – mtoto

+0

我正在使用的csv的屏幕截圖。 http://imgur.com/a/7yfQW –

回答

0

編輯基於OP點評:

如何

data %>% 
    gather(activity, ct, ActSwim:acteat) %>% 
    filter(ct == 1) %>% 
    count(activity) %>% 
    ggplot(., aes(activity, n)) + geom_barplot(stat = "identity") 

基本上轉換將數據轉換爲高而不是寬的整齊數據集,過濾器僅爲1,並使用dplyr :: count()進行聚合並饋入繪圖。

編輯:按性別一面:

data %>% 
    gather(activity, ct, ActSwim:acteat) %>% 
    filter(ct == 1) %>% 
    count(activity, gender) %>% 
    ggplot(., aes(activity, n)) + 
    geom_barplot(stat = "identity") + 
    facet_wrap(~gender, ncol = 2) 
+0

這並不完全回答我的問題。我試圖計算每個變量(有多少人在海灘野餐,有多少人在衝浪)並將它們相互比較。我不需要一個人是否做所有的活動。 –

+0

啊,好的。因此,如果數據有1個參與者,2個不是,那麼爲什麼有些值有7個呢? – Jacob

+0

第一列(VisBeau)是另一個問題的一部分,所以它不是我試圖創建的情節的一部分。我只關心與「行爲」相關的列。 –