R 计算列之间的频率并添加到条形图?

R 计算列之间的频率并添加到条形图?,r,ggplot2,bar-chart,R,Ggplot2,Bar Chart,首先,如果已经有人问过这个问题,我想表示歉意——这个问题有点类似,但我仍然不明白海报是如何在代码中按批次隔离、计数和绘制真实实例的。一般来说,我对RStudio和编码非常陌生 我想使用RStudio来计算四列数据中的频率,并将计数转换成条形图。数据结构如下所示: Column 1: 0,0,1,0,0,1... Column 2: 1,0,0,0,0,0... Column 3: 0,1,0,1,0,0... Column 4: 0,0,0,0,1,0... 我正在使用的.csv分别列出了每一

首先,如果已经有人问过这个问题,我想表示歉意——这个问题有点类似,但我仍然不明白海报是如何在代码中按批次隔离、计数和绘制真实实例的。一般来说,我对RStudio和编码非常陌生

我想使用RStudio来计算四列数据中的频率,并将计数转换成条形图。数据结构如下所示:

Column 1: 0,0,1,0,0,1...
Column 2: 1,0,0,0,0,0...
Column 3: 0,1,0,1,0,0...
Column 4: 0,0,0,0,1,0...
我正在使用的.csv分别列出了每一列。如何计算每列中出现的1次,并将其绘制在ggplot2中的条形图上?我想格式化图形,使每个列在x轴上都是一个变量,频率1在y轴上表示


在这种情况下,重新格式化.csv是最容易的,但不幸的是,我无法编辑数据文件。对我来说,包含我正试图使用的代码是毫无意义的,因为它的输出与我正在寻找的并不接近

假设您的数据帧如下所示:

df1 <- data.frame(Column1 = c(0,0,1,0,0,1),
                  Column2 = c(1,0,0,0,0,0),
                  Column3 = c(0,1,0,1,0,0),
                  Column4 = c(0,0,0,0,1,0))
你的数据很广泛。最好将其设置为长,这意味着有一列用于变量名,另一列用于变量值。使用聚集:

现在,您可以按每个变量和值进行计数:

df1 %>% 
  gather(Var, Val) %>% 
  count(Var, Val)

  Var       Val     n
  <chr>   <dbl> <int>
1 Column1     0     4
2 Column1     1     2
3 Column2     0     5
4 Column2     1     1
5 Column3     0     4
6 Column3     1     2
7 Column4     0     5
8 Column4     1     1

如何格式化数据帧以匹配您在第一步中给出的示例?这些列中的每一列在我的数据集中都是一个单独的变量。如果你问如何将CSV文件导入R,请从read.CSV开始使用?read.CSV阅读帮助。对不起,我应该澄清一下。数据集大约有20列,但我正在尝试分离其中的4列进行分析。如何从20列中分离出这四列?可以使用dplyr::select。例如df1%>%selectColumn1、Column2、Column3、Column4。好的,谢谢,这非常有用。唯一的问题是,我不确定在代码的Var部分放什么,因为我正在处理4个不同的变量。
df1 %>% 
  gather(Var, Val)
df1 %>% 
  gather(Var, Val) %>% 
  count(Var, Val)

  Var       Val     n
  <chr>   <dbl> <int>
1 Column1     0     4
2 Column1     1     2
3 Column2     0     5
4 Column2     1     1
5 Column3     0     4
6 Column3     1     2
7 Column4     0     5
8 Column4     1     1
df1 %>% 
  gather(Var, Val) %>% 
  count(Var, Val) %>% 
  filter(Val == 1) %>% 
  ggplot(aes(Var, n)) + geom_col()