作者celestialgod (天)
看板R_Language
标题Re: [问题] Y在不同group的占比
时间Thu May 5 22:43:54 2016
※ 引述《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://webptt.com/cn.aspx?n=bbs/R_Language/M.1462459438.A.1A7.html
※ 编辑: celestialgod (140.109.73.231), 05/05/2016 22:50:10
1F:推 but07: 万分感谢 我研究一下! 05/06 09:57