我在R中有下表(灵感来自一个曲线帮助数据表):
> dfx <- data.frame(
+ group = c(rep('A', 108), rep('B', 115), rep('C', 106)),
+ sex = sample(c("M", "F","U"), size = 329, replace = TRUE),
+ age = runif(n = 329, min = 18, max = 54)
+ )
> head(dfx)
group sex age
1 A U 47.00788
2 A M 32.40236
3 A M 21.95732
4 A F 19.82798
5 A F 30.70890
6 A M 30.00830
我有兴趣使用条形图(包括误差条)绘制每组中男性(M),女性(F)和“未知”(U)的百分比。 要做这个图,我打算使用panel.ci/prepanel.ci命令。
我可以使用prop.table命令轻松地为每个组构建一个比例表:
> with(dfx, prop.table(table(group,sex), margin=1)*100)
sex
group F M U
A 29.62963 28.70370 41.66667
B 35.65217 35.65217 28.69565
C 37.73585 33.01887 29.24528
但是现在,我想用错误条构建一个类似的表,并使用这两个表来制作条形图。
如果可能的话,我想使用ddply
命令,我将其用于类似的目的(除了它不是百分比,但意味着)。
答案 0 :(得分:0)
尝试这样的事情:
library(plyr)
library(ggplot2)
summary(dfx) # for example, each variable
dfx$interaction <- interaction(dfx$group, dfx$sex)
ddply(dfx, .(interaction), summary) #group by interaction, summary on dfx
ggplot(dfx, aes(x = sex, y = age, fill = group)) + geom_boxplot()
您可以获得有关构建图表here的良好在线教程。
我很确定你需要超过1个值来获得任何错误。我只看到变量组和性别的每个独特组合的比例的1个值。
这是我可以帮助你的最多(下图),但是当你找到合适的解决方案时,我有兴趣看到你回答你自己的问题。
dfx$interaction <- interaction(dfx$group, dfx$sex)
dfx.summary <- ddply(dfx, .(group, sex), summarise, total = length(group))
dfx.summary$prop <- with(dfx.summary, total/sum(total))
dfx.summary
# group sex prop
# 1 A F 0.06382979
# 2 A M 0.12158055
# 3 A U 0.14285714
# 4 B F 0.12462006
# 5 B M 0.11854103
# 6 B U 0.10638298
# 7 C F 0.10334347
# 8 C M 0.12158055
# 9 C U 0.09726444
ggplot(dfx.summary, aes(sex, total, color = group)) + geom_point(size = 5)