根据DF

时间:2015-12-10 18:55:59

标签: r dataframe percentage

我有一列火车在这里,我需要你帮助我。

这是df。

              Jobs       Agency      Location       Date RXH   HS  TMM Payed
14 Netapp Gitex F1 Events House          DWTC 2015-10-19 100  8.0  800  TRUE
5     RWC Heineken    Lightblue           EGC 2015-10-09  90  4.0  360 FALSE
45        Rugby 7s          CEO Seven Stadium 2015-12-04 100 10.0 1000 FALSE
29     Playstation    Lightblue    Mirdiff CC 2015-11-11  90  7.0  630 FALSE
24    RWC Heineken    Lightblue           EGC 2015-10-31  90  4.5  405 FALSE
33     Playstation    Lightblue    Mirdiff CC 2015-11-15  90 10.0  900 FALSE
46        Rugby 7s          CEO Seven Stadium 2015-12-05 100 10.0 1000 FALSE
44        Rugby 7s          CEO Seven Stadium 2015-12-03 100 10.0 1000 FALSE

我想知道例如,总行数是10,我在" CEO"代理机构3次,我希望CEO代理商在那个月拥有30%的价值,如果有意义的话?

我想知道根据观察的数量,我为他们工作了多少%。

这只是一个演示DF,看看我在说什么。

由于

2 个答案:

答案 0 :(得分:3)

如果我理解正确,您希望按代理商和按月汇总。以下是dplyr

的使用方法
library(dplyr)
table1 %>%
mutate(Month=format(Date,"%m-%Y")) %>%
group_by(Month,Agency)%>%
summarise(Total=n())%>%
mutate(Pct=round(Total/sum(Total)*100))

Source: local data frame [4 x 4]
Groups: Month [3]

    Month       Agency Total   Pct
    (chr)        (chr) (int) (dbl)
1 10-2015 Events House     1    33
2 10-2015    Lightblue     2    67
3 11-2015    Lightblue     2   100
4 12-2015          CEO     3   100

答案 1 :(得分:2)

这只是一种简单的方法,我怀疑你可能正在寻找更多。但是,这里有一些代码可以为您提供示例问题的答案:

length(df$Agency[df$Agency == "CEO"]) / length(df$Agency)

第一个length()函数计算df $ Agency中有多少个单元被标记为" CEO,"然后第二个计算该列中的单元格总数。将它们分开将给你答案。

如果您想为列中的每个代理商自动执行此操作,这将变得更加复杂,但有一些基础知识。