R 按列总数而不是按分组变量计算百分比

R 按列总数而不是按分组变量计算百分比,r,data.table,R,Data.table,在此基础上,如果您希望计算百分比,而不是作为集团内部的一部分,而是作为列总数的一部分,那么最好的方法是什么 d <- read.table(text="Fuel Year Region Count Gasoline 2013 GE 169600 Diesel 2013 GE 46790 Hybrid 2013 GE 2268

在此基础上,如果您希望计算百分比,而不是作为集团内部的一部分,而是作为列总数的一部分,那么最好的方法是什么

d <- read.table(text="Fuel     Year   Region   Count
Gasoline 2013       GE  169600
                Diesel   2013       GE   46790
                Hybrid   2013       GE    2268
                Electric 2013       GE      85
                Other    2013       GE     532
                Gasoline 2013       VS  149232
                Diesel   2013       VS   50591
                Hybrid   2013       VS    1028
                Electric 2013       VS     268
                Other    2013       VS     261", header = TRUE)


d <- data.table(d)
有没有比这更好的方法来计算百分比:

d[, .(Car.Total = sum(Count)
    , Car.Share = sum(Count)/sum(d[,Count])), by = "Fuel"]

这看起来效率很低,但很有效。是否有更有效的方法只使用
数据表
方法

d[,(ct=sum(Count)),by=Fuel][,s:=ct/sum(ct)][]
?这是可行的,但没有函数,可以计算第一个
[]
中的总和,或者?不,不是真的。
j
中的所有内容都是按组计算的。这里有一些更复杂的方法:另一个选项:
d[,sum(Count)/sum(d$Count),Fuel]
@BrodieG,这与我在问题中使用的方法基本相同;-)
d[, .(Car.Total = sum(Count)
    , Car.Share = sum(Count)/sum(d[,Count])), by = "Fuel"]