【发布时间】:2016-06-13 15:34:26
【问题描述】:
我正在编写一个函数,但我对 R 的向量结构有点困惑。
我有一个数据表,其中每个人都有一个产品和一个产品价值。我有一个层级表,其中每个产品都有具有下限和上限的层级,然后是一个返回值。
我想做以下事情:
- 从
data.person获取产品 - 看看
data.tiers中的那个产品 - 从
data.person取值 - 将其与第一层进行比较。如果介于两者之间,则返回该值 底层和顶层。
- 对下一层再做同样的事情。
这是我已经走了多远:
Employee <- c("Bob", "Dave", "Sarah")
Product <- c("A", "B", "A")
Value <- c(10, 20, 50)
data.person <- data.frame(Employee, Product, Value)
Product <- c("A", "A", "B", "B")
Lower <- c(0,20,0,10)
Upper <- c(20, 999, 10, 999)
Return <- c(0.05, .1, 0.04, .08)
data.tiers <- data.frame(Product, Lower, Upper, Return)
myFunc <- function(product, value)
{
tiers.temp <- data.tiers %>%
filter(Product == product )
result <- 0
for (i in length(tiers.temp)){
if(value >tiers.temp$Lower[i] & value <= tiers.temp$Tier.Upper[i]){
result <- tiers.temp$Return[i] }
}
result
}
我的函数将乘积向量和值向量作为输入。我想进入并过滤我数据集中当前行的产品的data.tiers 表。我不确定这是否是基于 R 的向量性质的正确方法。
然后我遍历适用的层并执行我的测试并返回我需要分配给data.person 表中的列的值。
预期结果:我的最终结果是来自data.tiers 表的数字向量。因此数据集的第一行将返回 0.05,因为 10 介于 0 和 20 之间。
在这种情况下获得一些关于最佳实践的信息会很好。
【问题讨论】:
-
您的预期输出/结果是什么?
-
快速浏览表明您只是在创建一个直方图。使用
histogram函数。 -
没有直方图不是预期的结果。在问题中添加了预期的输出。
标签: r