Re: [問題] Y在不同group的占比

看板R_Language作者 (天)時間9年前 (2016/05/05 22:43), 9年前編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《but07 (BUT07)》之銘言: : [問題類型]: : 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) : [軟體熟悉度]: : 入門(寫過其他程式,只是對語法不熟悉) : [問題敘述]: : 想要知道應變數(y)在各個x中的不同group的占比(%) : 以下是拿arules裡面的IncomeESL資料作範例 : 我想要知道 : 1. 男性在每個收入成的占比(男性/全部) : 2. 男性在每個年齡層的占比(男性/全部) : 目前的圖: : http://imgur.com/yvKPuNZ
: 希望的圖: : http://imgur.com/sLocu8c
: (希望有點+曲線趨勢線) : [程式範例] : plot(sex~income+age,data=IncomeESL) : 上面是我目前使用的code : Google了一下找不太到答案 : 可能是我不太會下關鍵字 : 只好上來麻煩各位大大了 : 感謝 不知道是不是你要的,我讀了幾次,還是有點無法理解你想要的東西 我還是嘗試用折線圖去呈現男性於各收入級距、年齡層的比例 看看是否符合你的需求。 我也沒想到更簡單的畫法,就直接畫,但是這樣就會需要對資料整理比較熟悉 才有辦法直接整理資料你需要的資料做繪圖的動作 這個可能對一般R的新手是一道門檻,非常建議學會用dplyr做資料整理 然後用ggplot2去呈現你的圖形 我的做法是每一次都控制x變數,計算proportion之後 在繪製再圖上,兩張圖就要group_by兩次,當然也有函數解法放在下面 不過函數解法就比較難了,不太適合新手。 有任何疑問可以再發問。 library(ggplot2) library(dplyr) library(pipeR) data("IncomeESL", package = "arules") IncomeESL %>>% group_by(income) %>>% summarise(male_proportion = length(income[sex == "male"]) / n()) %>>% { ggplot(., aes(x = income, y = male_proportion, group = 1)) + geom_point() + geom_line() } IncomeESL %>>% group_by(age) %>>% summarise(male_proportion = length(age[sex == "male"]) / n()) %>>% { ggplot(., aes(x = age, y = male_proportion, group = 1)) + geom_point() + geom_line() } 也是可以改成用函數做,只是這個技巧比較高一點: plot_prop_f <- function(data, variableName, ylim = numeric(0)){ stopifnot(length(variableName) == 1) stopifnot(length(ylim) %in% c(0, 2)) group_by_(data, variableName) %>>% summarise_(.dots = setNames(list( sprintf("length(%s[sex == 'male']) / n()", variableName)), "male_proportion")) %>>% { g <- ggplot(., aes_(x = as.name(variableName), y = ~ male_proportion, group = ~ 1)) + geom_point() + geom_line() if (length(ylim) == 2) g <- g + ylim(ylim) g } } plot_prop_f(IncomeESL, "age") plot_prop_f(IncomeESL, "age", c(0.35, 0.5)) plot_prop_f(IncomeESL, "income") plot_prop_f(IncomeESL, "income", c(0.4, 0.5)) -- R資料整理套件系列文: magrittr #1LhSWhpH (R_Language) http://tinyurl.com/j3ql84c data.table #1LhW7Tvj (R_Language) http://tinyurl.com/hr77hrn dplyr(上) #1LhpJCfB (R_Language) http://tinyurl.com/jtg4hau dplyr(下) #1Lhw8b-s (R_Language) tidyr #1Liqls1R (R_Language) http://tinyurl.com/jq3o2g3 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.109.73.231 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1462459438.A.1A7.html ※ 編輯: celestialgod (140.109.73.231), 05/05/2016 22:50:10

05/06 09:57, , 1F
萬分感謝 我研究一下!
05/06 09:57, 1F
文章代碼(AID): #1NArmk6d (R_Language)
討論串 (同標題文章)
文章代碼(AID): #1NArmk6d (R_Language)