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"]