【发布时间】:2019-01-26 12:38:57
【问题描述】:
我有一个data.frame,我想计算一个性能指标(例如分位数)。但是,data.frame 的某些列包含您认为“负面”的统计信息 - 一个示例:
r=seq(0,1,0.25)
apply(state.x77,2,function(x) quantile(x,probs = r))
Population Income Illiteracy Life Exp Murder HS Grad Frost Area
0% 365.0 3098.00 0.500 67.9600 1.400 37.80 0.00 1049.00
25% 1079.5 3992.75 0.625 70.1175 4.350 48.05 66.25 36985.25
50% 2838.5 4519.00 0.950 70.6750 6.850 53.25 114.50 54277.00
75% 4968.5 4813.50 1.575 71.8925 10.675 59.15 139.75 81162.50
100% 21198.0 6315.00 2.800 73.6000 15.100 67.30 188.00 566432.00
收入和预期寿命为正。但是,例如谋杀率是负数,越低越好。我想要这个结果:
Population Income Illiteracy Life Exp Murder HS Grad Frost Area
0% 365.0 3098.00 2.800 67.9600 15.100 37.80 188.00 1049.00
25% 1079.5 3992.75 1.575 70.1175 10.675 48.05 139.75 36985.25
50% 2838.5 4519.00 0.950 70.6750 6.850 53.25 114.50 54277.00
75% 4968.5 4813.50 0.625 71.8925 4.350 59.15 66.25 81162.50
100% 21198.0 6315.00 0.500 73.6000 1.400 67.30 0.00 566432.00
我使用两个 sweep-functions 和一个 apply 函数来管理它。那太丑了!有没有更优雅的方式?
数据集state.x77 内置在 R 中。
【问题讨论】:
-
优雅我的意思是,通过使用一个扫描和/或一个应用功能?为了完整起见,我使用了一个权重向量
my_weight=c(1,1,-1,1,-1,1,-1,1) -
能否请您提供最少的数据(例如使用
dput),以便我们重现您的预期输出。 -
@MauritsEvers,
state.x77是一个内置在R中的数据集。无需包含最少的数据。 -
我的错。感谢您的澄清。