使用R中的数据框创建包含多个变量的频率表

时间:2017-03-27 15:45:50

标签: r

我需要通过从另一个数据帧中提取多个变量来创建频率表。

例如,我有一个包含以下信息的数据框

产品结果位置来源年月

我想创建一个基于正检测的频率表(即结果1),类似于excel中的数据透视表。 例如

源产品位置2008 2009 2010 2011

其中每年的检测频率是根据类别的总数计算的。

最终结果是我想基于的方面绘制一个构面网格 x =年,y = freq,color = source,facet grid = sample

我可以使用1的计数来执行ggplot但是我如何使用freq来实现它,以便可以考虑分母?

我的实际数据有20,000多行。

抱歉,我无法以某种方式添加代码。

谢谢。

1 个答案:

答案 0 :(得分:0)

我们只是这样做作为答案,看看它是否更容易阅读和解决。我跑两张桌来检查我的工作。第一个计算组合计数== 1的所有情况的百分比。第二个是所有具有百分比的案例的表。您将看到df1计算的单个数字等于所有组合的总数为1。如果您需要跨多年(或其他)执行此操作,请仔细考虑按功能分组(你可以分组,取消组合,再次分组,再次取消组合,直到你心满意为止):

library(dplyr)

df <- iris

df1 <- df %>%
  group_by(Species, Petal.Width) %>%
  summarise(COUNT = n()) %>%
  ungroup() %>%
  mutate(PERCENT = COUNT/sum(COUNT)) %>%
  filter(COUNT == 1) %>%
  summarise(COUNT_1 = sum(PERCENT))


df2 <- df %>%
  group_by(Species, Petal.Width) %>%
  summarise(COUNT = n()) %>%
  ungroup() %>%
  mutate(PERCENT = COUNT/sum(COUNT))

df1

as.data.frame(df2)