R和ggplot新手在这里。 我正在尝试为表示问卷答案的数据框创建一些有意义的图表,其中有些人给出了这种类型的多个答案:
你喜欢什么肉(检查所有适用的): 1.fish; 2.pork
对于其他问题,只有一个选择:
你喝啤酒吗?很少/经常/从不
由于有多个答案,因此它们被编码为虚拟变量:eat.fish的值为1表示肯定答案,0表示否则与eat.pork相同。数据框如下所示:
pork<-c(0,1,0,1,1)
id<-c(1:5)
sex<-c("m","m","f","f","f")
eat.fish<-c(1,1,0,0,1)
eat.pork<-c(0,1,0,1,1)
drink.beer<-c("often","seldom","never","seldom","never")
df<-data.frame(id,sex,eat.fish,eat.pork,drink.beer)
现在,对于像drink.beer这样的分类变量,我知道如何使用ggplot2获得一些有意义的图:
qplot(data=df, drink.beer, fill=drink.beer)
和
qplot(data=df, drink.beer, fill=drink.beer)+facet_wrap(~sex)
但我想对猪肉和鱼类变量采用相同的方法,但我不知道从哪里开始。
答案 0 :(得分:1)
您可以重新编码变量
df$eat.pork2 <- ifelse(df$eat.pork == 1, "eat_pork", "dont_eat_pork")
qplot(data=df, eat.pork2, fill=eat.pork2)
或者如果你想将猪肉和鱼混合成一个变量
df$eat <- ifelse(df$eat.pork == 1 & df$eat.fish == 1, "eat_pork_fish",
ifelse( df$eat.pork == 1 & df$eat.fish == 0, "eat_pork_only",
ifelse( df$eat.pork == 0 & df$eat.fish == 1, "eat_fish_only",
"neither_pork_fish")))
qplot(data=df, eat, fill=eat)+facet_wrap(~sex)
qplot(data=df, eat, fill=eat)
答案 1 :(得分:0)
现在,您的eat.pork
和eat.fish
变量是数字。您可以将它们转换为qplot
函数中的因子变量,如下所示:
qplot(data=df, as.factor(eat.pork), fill=as.factor(eat.pork)) + facet_wrap(~sex)
您可以对eat.fish
变量执行相同的操作。如果要将eat.pork
和eat.fish
变量合并为一个变量,请参阅matt_k的答案以获取如何执行此操作的说明。