【发布时间】:2017-05-15 16:49:54
【问题描述】:
我有一个包含因子和数值的数据表。我想要的是对该数据表进行子集化以仅选择较高的值。这些较高值的总和必须代表列总和的 80%。
有没有优雅的方法?
例如,这是一个无序数据表,ECART_H 列包含感兴趣的值 (sum = 10307.08;0.8*sum = 8245),子集应导致仅选择第 3 行:和第 4 行:(sum= 8428),以便这 2 行是至少要选择的行数 > 80% 的总和 ECART_H。
REGROUP FAMILLE TREND RMSE ECART_H
1: 10 A03 48.43853 675.7492 470.45737
2: 10 A04 61.65814 599.2031 795.08575
3: 10 H01 269.07728 12004.1214 6974.29642
4: 10 N01 -170.30563 6282.8133 1455.44291
5: 10 S01 147.61121 2711.0511 529.22545
6: 10 D06 13.64792 167.9315 82.57669
【问题讨论】:
-
多少个值被认为是更高的值?也许
library(zoo);df1[df1[, which(rollsum(ECART_H, 2) > (0.8 * sum(ECART_H))) + 0:1]]