我需要通过从另一个数据帧中提取多个变量来创建频率表。
例如,我有一个包含以下信息的数据框
产品结果位置来源年月
我想创建一个基于正检测的频率表(即结果1),类似于excel中的数据透视表。 例如
源产品位置2008 2009 2010 2011
其中每年的检测频率是根据类别的总数计算的。
最终结果是我想基于的方面绘制一个构面网格 x =年,y = freq,color = source,facet grid = sample
我可以使用1的计数来执行ggplot但是我如何使用freq来实现它,以便可以考虑分母?
我的实际数据有20,000多行。
抱歉,我无法以某种方式添加代码。谢谢。
答案 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)