【发布时间】:2019-09-29 14:12:33
【问题描述】:
我有两个数据框。 dataframe_A 包含用户和给定值:
dfA <- structure(list(User = 1:5, Value = c(54L, 12L, 7L, 123L, 74L)),
row.names = c(NA, -5L), class = "data.frame")
dfA
#> User Value
#> 1 1 54
#> 2 2 12
#> 3 3 7
#> 4 4 123
#> 5 5 74
dfB 包含值范围和我想添加到 dfA 的乘数:
dfB <- structure(list(Min = c(0L, 50L, 80L, 100L, 120L),
Max = c(50L, 80L, 100L, 120L, 1000L),
Mult = c(0, 0.5, 0.8, 1, 1.2)),
class = "data.frame", row.names = c(NA, -5L))
dfB
#> Min Max Mult
#> 1 0 50 0.0
#> 2 50 80 0.5
#> 3 80 100 0.8
#> 4 100 120 1.0
#> 5 120 1000 1.2
所以想要的结果是将 dfB 中的乘数加到 dfB:
dfA
User Value Mult
[1] 1 54 0.5
[2] 2 12 0
[3] 3 7 0
[4] 4 123 1.2
[5] 5 74 0.5
我已经尝试过这段代码(它适用于单个值),但在数据框中不起作用:
dfA$Mult <- print(subset(dfB, dfA$Value > dfB$Min & dfA$Value < dfB$Max)$Mult)
提前致谢!
【问题讨论】:
-
值 50 所需的
Mult是什么?在我看来,Min或Max应该为它们减去 1,或者,至少应该指定边缘情况是属于较低的括号还是较高的括号。
标签: r