Re: [問題] Y在不同group的占比
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章