r - 如果 col[B] 在特定范围内,则尝试获取 col[A] 的总和
问题描述
我正在尝试获取sum
特定工资范围内的百分比。
我有一张表wop
,意思是“人的工资”。就像这样
wage percentage
2 0.1
3 0.1
3.4 0.01
3.5 0.12
4 0.01
5 0.02
6.3 0.1
7 0.2
9 0.11
12 0.12
.
.
.
可以看到这个表是按照 排序的wage
。[middle wage*0.5 < x <= middle wage*1.5]
middle wage
如果工资 id 在范围内意味着如果我们按工资排列行的范围,并且如果百分比的累积总和“最接近但小于 0.5”,我正在尝试对所有百分比
求和,则该工资被称为middle wage
。
我确实喜欢这个
wop$per <- cumsum(wop&percentage)
并发现 [which.min(wop$per-0.5 < 0) - 1]
给了我“中等工资”。
所以我继续制作这样的功能
mid <- function(x){
if(x$wage <= x[which.min(wop$per-0.5 < 0) - 1 , 1]*1.5 &
x$wage > x[which.min(wop$per-0.5 < 0) - 1 , 1]*0.5) {
a <- sum(x$percentage)
}
return(a)
}
但此代码继续显示“错误”。
请帮助...如何解决这个问题。
解决方案
这是一种执行问题要求的矢量化方式。
mid<- function(DF){
DF <- DF[order(DF[['wage']]), ]
y <- cumsum(DF[['percentage']])
i <- which.max(y[y < 0.5])
inx <- DF[i, 'wage']*0.5 < DF[['wage']] & DF[['wage']] < DF[i, 'wage']*1.5
sum(DF[inx, 'percentage'])
}
mid(wop)
#[1] 0.57
数据。
wop <- read.table(text = "
wage percentage
2 0.1
3 0.1
3.4 0.01
3.5 0.12
4 0.01
5 0.02
6.3 0.1
7 0.2
9 0.11
12 0.12
", header = TRUE)
推荐阅读
- python-3.x - 为什么 isinstance() 不表现得像我一样?
- c# - Docker-Compose YML 与 ASP.NET Core 2.2 Web API 和 SQL Server 2017
- parallel-processing - 在 Cython 并行化期间如何附加到列表中?
- javascript - 不明白成功函数在 AJAX 中的工作原理
- python - 如何使用 Python 脚本控制飞利浦 Hue 灯
- node.js - 如何用 sinon 模拟回调请求?
- javascript - electron-builder 目标:mac vs. mas
- css - 按钮垂直组,在引导程序 4 中与底部对齐
- python - 如何将修改后的图像列表保存到另一个文件夹中?
- azure - 在 Azure ML 工作区中部署 autoML StackEnsemble 模型时出错