R (频率)表中一行的方框图
我有一个数据集作为.csv文件(基本上是:人们的葡萄酒选择与环境音乐播放的起源有关)。将其作为数据帧读取会导致df如下所示:R (频率)表中一行的方框图,r,R,我有一个数据集作为.csv文件(基本上是:人们的葡萄酒选择与环境音乐播放的起源有关)。将其作为数据帧读取会导致df如下所示: Music Wine 1 French French 2 Italian French 3 None Italian 4 Italian Italian 5 French Other ... Wine Music Other French Italian French 35
Music Wine
1 French French
2 Italian French
3 None Italian
4 Italian Italian
5 French Other
...
Wine
Music Other French Italian
French 35 39 1
None 43 30 11
Italian 35 30 19
作为一个表,它看起来如下所示:
Music Wine
1 French French
2 Italian French
3 None Italian
4 Italian Italian
5 French Other
...
Wine
Music Other French Italian
French 35 39 1
None 43 30 11
Italian 35 30 19
现在我想创建一个频率图,它只绘制使用Music==“None”进行购买的相对分布。所以基本上我会得到其他=0.511904,法语=0.3571429,意大利语=0.1309524
现在我的问题是,这张桌子不起作用
noMusic <- prop.table(table(data[data$Music == "None"]))
geenMuziekTabel <- prop.table(table(data[data$Music == "None"]))
我想:也许我应该先将我的数据帧子集,然后用它做一个比例表,但R似乎记得还有其他数据,然后做这个表:
Wine
Music Other French Italian
French 0 0 0
None 43 30 11
Italian 0 0 0
我也试过很多不同的方法,但都没办法解决。有人知道我做错了什么吗
编辑:基于已接受答案的解决方案如下:
noMusicTable <- prop.table(table(musicwine$Wine[musicwine$Music == "None"]))
#noMusicTable <- prop.table(table(subset(musicwine, Music == "None", select = Wine)))
noMusicDF <- as.data.frame(noMusicTable)
# need to declare x and y explicitly; use stat = 'identity' to map bars to y-variable
ggplot(noMusicDF, mapping = aes(x = Var1, y = Freq)) + geom_bar(stat = 'identity', fill='red')
noMusicTable这里有三种正确子集的方法:
dat <- read.table(text =
"Music Wine
French French
Italian French
None Italian
Italian Italian
French Other", header = TRUE)
# Two different ways to subset
prop.table(table(dat$Wine[dat$Music == "None"]))
prop.table(table(subset(dat, Music == "None", select = Wine)))
# With dplyr and piping
library(dplyr)
dat %>%
filter(Music == "None") %>%
select(Wine) %>%
table() %>%
prop.table()
dat%
过滤器(音乐==“无”)%>%
选择(葡萄酒)%>%
表()%>%
项目表()
看看这个:啊,我花了两个小时的时间拼命寻找答案,事情就这么简单。非常感谢。