Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 每个类别、每个变量的百分比条形图_R_Plot_Ggplot2 - Fatal编程技术网

R 每个类别、每个变量的百分比条形图

R 每个类别、每个变量的百分比条形图,r,plot,ggplot2,R,Plot,Ggplot2,给出以下示例数据: df<-data.frame(cbind(cntry<- c("BE","ES","IN","GE","BE","ES","GE",NA,"IN","IN"), gndr<- c(NA,1,2,2,2,2,1,1,1,2), plcvcrcR<-c(0,1,NA,0,0,1,1,1,0,0), plcpvcrR<-c(0,1,1,1,NA,0,0,0,0,0), plccbrgR<- c(0,1,0,NA,0,1,0,1,1,0), plc

给出以下示例数据:

df<-data.frame(cbind(cntry<- c("BE","ES","IN","GE","BE","ES","GE",NA,"IN","IN"),
gndr<- c(NA,1,2,2,2,2,1,1,1,2),
plcvcrcR<-c(0,1,NA,0,0,1,1,1,0,0),
plcpvcrR<-c(0,1,1,1,NA,0,0,0,0,0),
plccbrgR<- c(0,1,0,NA,0,1,0,1,1,0),
plcarcrR<-c(1,0,0,NA,1,0,1,0,0,0),
plcrspcR<-c(1,1,0,0,0,0,0,1,1,NA)))
colnames(df)<- c("cntry", "gndr", "plcvcrcR", "plcpvcrR", "plccbrgR", "plcarcrR", "plcrspcR")
df

我会这样做:

require(ggplot2)
require(reshape2)
require(scales)
require(plyr)

# remove NA from gndr
df <- df[!is.na(df$gndr), ]
# now get percentages
df.o <- ddply(df, .(gndr), summarise, 
              plcpvcrR = sum(plcpvcrR == 1, na.rm = T)/sum(!is.na(plcpvcrR)), 
              plccbrgR = sum(plccbrgR == 1, na.rm = T)/sum(!is.na(plccbrgR)), 
              plcrspcR = sum(plcrspcR == 1, na.rm = T)/sum(!is.na(plcrspcR)))
# melt it:
df.m <- melt(df.o, id.var = "gndr")

# plot it:
ggplot(data = df.m, aes(x=gndr)) + geom_bar(aes(weights=value, fill=variable), 
      position = "dodge") + scale_y_continuous(labels=percent)
require(ggplot2)
要求(2)
需要(天平)
需要(plyr)
#从gndr中删除NA

df您想如何处理
NA
?我只想计算有效百分比(即从总数中剔除
NA
)。性别方面的
NA
如何?是否要打印
1、2和NA
?当你的意思是从总数中剔除NA时,你的意思是当除以总数时,NA不应该包括在内?不,我想画1和2,而不是NA的性别。是的,我的意思是,在除以总数时不应该包括NA。好的,太好了。我希望我做对了。看看情节。
require(ggplot2)
require(reshape2)
require(scales)
require(plyr)

# remove NA from gndr
df <- df[!is.na(df$gndr), ]
# now get percentages
df.o <- ddply(df, .(gndr), summarise, 
              plcpvcrR = sum(plcpvcrR == 1, na.rm = T)/sum(!is.na(plcpvcrR)), 
              plccbrgR = sum(plccbrgR == 1, na.rm = T)/sum(!is.na(plccbrgR)), 
              plcrspcR = sum(plcrspcR == 1, na.rm = T)/sum(!is.na(plcrspcR)))
# melt it:
df.m <- melt(df.o, id.var = "gndr")

# plot it:
ggplot(data = df.m, aes(x=gndr)) + geom_bar(aes(weights=value, fill=variable), 
      position = "dodge") + scale_y_continuous(labels=percent)