r - 根据一个数据框中其他值的总和计算一个值

标签 r dataframe

我正在尝试在 R 中解决这个问题,虽然我知道我现在已经在 Excel 中完成了,但我真的很想学习如何使用 R。

我的数据框是这样的:

 OBJECTID CDUID SENSI_FINA FREQUENCY SUM_LENGTH

        6  5915          1        51      19178

        7  5915          2        97      21536

        8  5915          3       201      35640

        9  5915          4       551     170549

       10  5915          5       308     145126

       11  5917          1       210      28104

       12  5917          2      1897     249379

现在我想总结 SUM_LENGTHCDUID然后计算百分比 SUM_LENGTHSENSI_FINAL=5是求和的 SUM_LENGTHCDUID

简单来说,我想这样做:

(145123/(19178+21536+35640+170549))*100

CDUID = 5915然后是下一个 5917 等等。

到目前为止我所做的是根据 CDUID 计算总和:

CDlenght <- aggregate(step1$SUM_LENGTH~step1$CDUID, data=step1, sum)

但现在我卡住了...:-(

最佳答案

我会为此使用 data.tableddply

library(plyr)

DT2 <- ddply(step1, .(CDUID), mutate, percent = 100* SUM_LENGTH / sum(SUM_LENGTH))

 subset(DT2, SENSI_FINA == 5)
##   OBJECTID CDUID SENSI_FINA FREQUENCY SUM_LENGTH percent
## 5       10  5915          5       308     145126 37.0192

我认为 data.table 语法更优雅,内存效率更高

library(data.table)
DT <- data.table(step1)

DT[,percent :=  100* SUM_LENGTH / sum(SUM_LENGTH), by = CDUID][SENSI_FINA == 5]

:=DT 中通过引用分配(因此 percent 列现在将在 DT

关于r - 根据一个数据框中其他值的总和计算一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13281177/

相关文章:

r - 如何使用另一个矩阵的列(或行)计算矩阵的每一列(或行)的加权平均值?

r - 通过推断模式 : double 读取 csv 文件时出现 sparklyr 异常

r - 如何从数据框中提取要在循环中使用的列的名称?

python - pandas groupby 两个相似的列和两个不同的列

python - 应用其参数取决于列值的函数

python - 将函数/计算应用于 pandas 中的多列

dataframe - 将 DataFrame 的集合组合成一个大的 DataFrame

r - R中的正态分布图

r - 仅通过 R 中递增、升序来过滤组

r - 使用带分位数的 geom_boxplot