在R中的另一个table中获取指定值范围内小于特定值的第一个值的位置
Get the position of the first value lesser than a particular value over a specified range of value in another table in R
我在用 R 复制一个用 Excel 编写的函数时遇到了麻烦。我的想法是让第一个值的位置小于 table 中的某些值。我在 excel 中使用索引匹配来解决这个问题,但在 R 中似乎无法这样做。这是第一个 table 称为 table1
[这 table 显示了我想要的最终结果,如 Match。][1]
“匹配”列是使用此公式获得的
[公式][2]
该公式基本上是从 table2 中获取第一个值的位置,该值低于列 H(价格)中的值,同时使用列 F(起始行)和 G(结束行)中的范围
这是 table2 的片段
[表 2][3]
我已经在 R 中创建了粗略的 tables
表 1
table1 = data.frame(startRow = c(1, 1, 1, 1, 1, 1, 1214, 1214, 1214, 1214, 1214, 1214),
EndRow = c(1213, 1213, 1213, 1213, 1213, 1213, 2436, 2436, 2436, 2436, 2436, 2436),
Price = c(-30, -9.98, 0.84529776, 0.86587152, 0.9082343302, 0.9303399076, -30, -9.98, 0.73987384, 0.75788168, 0.7949610816, 0.814309693))
表 2
table2 = data.frame(Price = c(-33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -11.1108, -11.1108, -11.1108, -11.1108, -11.1108, -11.1108, -11.1108, -11.1108, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -9.999, -9.999, -9.999, -9.999, -9.999, -9.999, -8.02, -8.02, -7.02, -7.02, -5.98, -5.98, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -2.9336, -2.9336, -2.9336, -2.9336, -2.9336, -2.9336, -2.9336, -2.9336, -2.9336, -2.9336, -2.9336, -2.9336, -1.8, -1.8, -1.296, -1.296, -1.258, -1.258, -1.22, -1.22, -1.2, -1.2, -1.182, -1.182, -1.144, -1.144, -1.106, -1.106, -1.068, -1.068, -1.03, -1.03, -1.002, -1.002, -1, -1, -1, -1, -1, -1, -1, -1, -0.992, -0.992, -0.954, -0.954, -0.916, -0.916, -0.878, -0.878, -0.838, -0.838, -0.8, -0.8, -0.762, -0.762, -0.724, -0.724, -0.686, -0.686, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6492, -0.6492, -0.648, -0.648, -0.61, -0.61, -0.6, -0.6, -0.572, -0.572, -0.534, -0.534, -0.5, -0.5, -0.496, -0.496, -0.458, -0.458, -0.42, -0.42, -0.4, -0.4, -0.4, -0.4, -0.382, -0.382, -0.38, -0.38, -0.344, -0.344, -0.306, -0.306, -0.3, -0.3, -0.268, -0.268, -0.228, -0.228, -0.2222, -0.2222, -0.2222, -0.2222, -0.2222, -0.2222, -0.2222, -0.2, -0.2, -0.19, -0.19, -0.152, -0.152, -0.1334, -0.1334, -0.1334, -0.1334, -0.12, -0.12, -0.12, -0.12, -0.12, -0.12, -0.12, -0.12, -0.12, -0.12, -0.12, -0.12, -0.12, -0.12, -0.114, -0.114, -0.1054, -0.1054, -0.08, -0.08, -0.076, -0.076, -0.04, -0.04, -0.038, -0.038, -0.02, -0.02, -0.02, -0.02, -0.02, -0.02, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.038, 0.038, 0.04, 0.04, 0.076, 0.076, 0.114, 0.114, 0.12, 0.12, 0.152, 0.152, 0.19, 0.19, 0.2, 0.2, 0.228, 0.228, 0.266, 0.266, 0.304, 0.304, 0.32, 0.32, 0.342, 0.342, 0.36, 0.36, 0.382, 0.382, 0.42, 0.42, 0.44, 0.44, 0.458, 0.458, 0.48, 0.48, 0.496, 0.496, 0.4978, 0.4978, 0.4982, 0.4982, 0.5098, 0.5098, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.5212, 0.5212, 0.5328, 0.5328, 0.5346, 0.5346, 0.5416, 0.5416, 0.5444, 0.5444, 0.5444, 0.5444, 0.5558, 0.5558, 0.5584, 0.5584, 0.56, 0.56, 0.6, 0.6, 0.62, 0.62, 0.653, 0.653, 0.66, 0.66, 0.6714, 0.6714, 0.6716, 0.6716, 0.68, 0.68, 0.68, 0.68, 0.68, 0.68, 0.68, 0.68, 0.686, 0.686, 0.7, 0.7, 0.724, 0.724, 0.74, 0.74, 0.74, 0.74, 0.76, 0.76, 0.762, 0.762, 0.7714, 0.7714, 0.7754, 0.7754, 0.7852, 0.7852, 0.7972, 0.7972, 0.8, 0.8, 0.8, 0.8, 0.8336, 0.8336, 0.838, 0.838, 0.85, 0.85, 0.876, 0.876, 0.889, 0.889, 0.914, 0.914, 0.954, 0.954, 0.96, 0.96, 0.9778, 0.9778, 0.9852, 0.9852, 0.9864, 0.9864, 0.992, 0.992, 0.999, 0.999, 1, 1, 1, 1, 1.0176, 1.0176, 1.0276, 1.0276, 1.03, 1.03, 1.0614, 1.0614, 1.068, 1.068, 1.106, 1.106, 1.1112, 1.1112, 1.144, 1.144, 1.1446, 1.1446, 1.1506, 1.1506, 1.16, 1.16, 1.1702, 1.1702, 1.1742, 1.1742, 1.1752, 1.1752, 1.182, 1.182, 1.2002, 1.2002, 1.2162, 1.2162, 1.2162, 1.2162, 1.2162, 1.2162, 1.22, 1.22, 1.233, 1.233, 1.244, 1.244, 1.258, 1.258, 1.26, 1.26, 1.296, 1.296, 1.334, 1.334, 1.3376, 1.3376, 1.3378, 1.3378, 1.3378, 1.3378, 1.3426, 1.3426, 1.3534, 1.3534, 1.36, 1.36, 1.372, 1.372, 1.3732, 1.3732, 1.3788, 1.3788, 1.4072, 1.4072, 1.41, 1.41, 1.448, 1.448, 1.4592, 1.4592, 1.4596, 1.4596, 1.4596, 1.4596, 1.48, 1.48, 1.486, 1.486, 1.524, 1.524, 1.53, 1.53, 1.56, 1.56, 1.564, 1.564, 1.58, 1.58, 1.5808, 1.5808, 1.5812, 1.5812, 1.5812, 1.5812, 1.602, 1.602, 1.64, 1.64, 1.6446, 1.6446, 1.6496, 1.6496, 1.6578, 1.6578, 1.6774, 1.6774, 1.678, 1.678, 1.68, 1.68, 1.689, 1.689, 1.7024, 1.7024, 1.7028, 1.7028, 1.7028, 1.7028, 1.716, 1.716, 1.754, 1.754, 1.76, 1.76, 1.7836, 1.7836, 1.792, 1.792, 1.824, 1.824, 1.8244, 1.8244, 1.8244, 1.8244, 1.83, 1.83, 1.868, 1.868, 1.906, 1.906, 1.944, 1.944, 1.982, 1.982, 2.02, 2.02, 2.058, 2.058, 2.08, 2.08, 2.096, 2.096, 2.134, 2.134, 2.174, 2.174, 2.212, 2.212, 2.25, 2.25, 2.288, 2.288, 2.326, 2.326, 2.364, 2.364, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.402, 2.402, 2.44, 2.44, 2.478, 2.478, 2.48, 2.48, 2.4938, 2.4938, 2.8892, 2.8892, 2.8892, 2.8892, 2.8892, 2.8892, 2.8994, 2.8994, 3, 3, 3.28, 3.28, 3.3, 3.3, 3.305, 3.305, 3.3336, 3.3336, 3.3336, 3.3336, 3.3336, 3.3336, 3.5618, 3.5618, 3.6, 3.6, 4.1296, 4.1296, 4.2, 4.2, 4.8, 4.8, 4.9264, 4.9264, 4.9464, 4.9464, 5, 5, 5.38, 5.38, 5.4886, 5.4886, 5.5, 5.5, 5.84, 5.84, 5.86, 5.86, 6, 6, 6.04, 6.04, 6.06, 6.06, 6.1284, 6.1284, 6.6672, 6.6672, 7, 7, 7, 7, 8.597, 8.597, 8.7494, 8.7494, 8.8084, 8.8084, 8.8538, 8.8538, 8.978, 8.978, 9, 9, 9.0014, 9.0014, 9.1952, 9.1952, 9.3064, 9.3064, 9.7396, 9.7396, 9.7786, 9.7786, 9.9766, 9.9766, 9.9766, 9.9766, 9.98, 9.98, 9.985, 9.985, 10, 10, 10, 10, 10, 10, 10.0022, 10.0022, 10.0022, 10.0022, 10.0022, 10.0022, 11.112, 11.112, 11.1144, 11.1144, 19.98, 19.98, 50, 50, 59.9882, 59.9882, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016,
200.016,200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016,
200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016,
200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016,
0, 0, 0, 0, 0, 0
))
我尝试使用 r 中的 findinterval
为每一行创建一个新的 table
atest = as.data.frame ((table2$Price[findInterval(seq(table1$StartRow[1],table1$EndRow[1],by=1),table2$row)]))
names(atest)[1]= "te"
然后使用 which
查找值
a = min(which ( table1$Price[1] > atest$te))
我仍然没有得到所需的输出
现在我需要 r 中的匹配列。有什么想法吗?
[1]: https://i.stack.imgur.com/6OY2j.png
[2]: https://i.stack.imgur.com/emMrD.png
[3]: https://i.stack.imgur.com/0xXnn.png
您为此使用了任何应用函数。
使用mapply
:
table2$index <- 1:nrow(table2)
table1$match <- mapply(function(x, y, z) {
dat <- subset(table2, index >= x & index <= y)
which(dat$Price > z)[1]
}, table1$startRow, table1$EndRow, table1$Price)
我们在 table2
(index
) 中创建另一列来跟踪行号,该行号用于使用 startRow
和 EndRow
筛选行。
我在用 R 复制一个用 Excel 编写的函数时遇到了麻烦。我的想法是让第一个值的位置小于 table 中的某些值。我在 excel 中使用索引匹配来解决这个问题,但在 R 中似乎无法这样做。这是第一个 table 称为 table1 [这 table 显示了我想要的最终结果,如 Match。][1]
“匹配”列是使用此公式获得的
[公式][2]
该公式基本上是从 table2 中获取第一个值的位置,该值低于列 H(价格)中的值,同时使用列 F(起始行)和 G(结束行)中的范围
这是 table2 的片段 [表 2][3]
我已经在 R 中创建了粗略的 tables 表 1
table1 = data.frame(startRow = c(1, 1, 1, 1, 1, 1, 1214, 1214, 1214, 1214, 1214, 1214),
EndRow = c(1213, 1213, 1213, 1213, 1213, 1213, 2436, 2436, 2436, 2436, 2436, 2436),
Price = c(-30, -9.98, 0.84529776, 0.86587152, 0.9082343302, 0.9303399076, -30, -9.98, 0.73987384, 0.75788168, 0.7949610816, 0.814309693))
表 2
table2 = data.frame(Price = c(-33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -33.336, -11.1108, -11.1108, -11.1108, -11.1108, -11.1108, -11.1108, -11.1108, -11.1108, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -9.999, -9.999, -9.999, -9.999, -9.999, -9.999, -8.02, -8.02, -7.02, -7.02, -5.98, -5.98, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -2.9336, -2.9336, -2.9336, -2.9336, -2.9336, -2.9336, -2.9336, -2.9336, -2.9336, -2.9336, -2.9336, -2.9336, -1.8, -1.8, -1.296, -1.296, -1.258, -1.258, -1.22, -1.22, -1.2, -1.2, -1.182, -1.182, -1.144, -1.144, -1.106, -1.106, -1.068, -1.068, -1.03, -1.03, -1.002, -1.002, -1, -1, -1, -1, -1, -1, -1, -1, -0.992, -0.992, -0.954, -0.954, -0.916, -0.916, -0.878, -0.878, -0.838, -0.838, -0.8, -0.8, -0.762, -0.762, -0.724, -0.724, -0.686, -0.686, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6668, -0.6492, -0.6492, -0.648, -0.648, -0.61, -0.61, -0.6, -0.6, -0.572, -0.572, -0.534, -0.534, -0.5, -0.5, -0.496, -0.496, -0.458, -0.458, -0.42, -0.42, -0.4, -0.4, -0.4, -0.4, -0.382, -0.382, -0.38, -0.38, -0.344, -0.344, -0.306, -0.306, -0.3, -0.3, -0.268, -0.268, -0.228, -0.228, -0.2222, -0.2222, -0.2222, -0.2222, -0.2222, -0.2222, -0.2222, -0.2, -0.2, -0.19, -0.19, -0.152, -0.152, -0.1334, -0.1334, -0.1334, -0.1334, -0.12, -0.12, -0.12, -0.12, -0.12, -0.12, -0.12, -0.12, -0.12, -0.12, -0.12, -0.12, -0.12, -0.12, -0.114, -0.114, -0.1054, -0.1054, -0.08, -0.08, -0.076, -0.076, -0.04, -0.04, -0.038, -0.038, -0.02, -0.02, -0.02, -0.02, -0.02, -0.02, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.038, 0.038, 0.04, 0.04, 0.076, 0.076, 0.114, 0.114, 0.12, 0.12, 0.152, 0.152, 0.19, 0.19, 0.2, 0.2, 0.228, 0.228, 0.266, 0.266, 0.304, 0.304, 0.32, 0.32, 0.342, 0.342, 0.36, 0.36, 0.382, 0.382, 0.42, 0.42, 0.44, 0.44, 0.458, 0.458, 0.48, 0.48, 0.496, 0.496, 0.4978, 0.4978, 0.4982, 0.4982, 0.5098, 0.5098, 0.52, 0.52, 0.52, 0.52, 0.52, 0.52, 0.5212, 0.5212, 0.5328, 0.5328, 0.5346, 0.5346, 0.5416, 0.5416, 0.5444, 0.5444, 0.5444, 0.5444, 0.5558, 0.5558, 0.5584, 0.5584, 0.56, 0.56, 0.6, 0.6, 0.62, 0.62, 0.653, 0.653, 0.66, 0.66, 0.6714, 0.6714, 0.6716, 0.6716, 0.68, 0.68, 0.68, 0.68, 0.68, 0.68, 0.68, 0.68, 0.686, 0.686, 0.7, 0.7, 0.724, 0.724, 0.74, 0.74, 0.74, 0.74, 0.76, 0.76, 0.762, 0.762, 0.7714, 0.7714, 0.7754, 0.7754, 0.7852, 0.7852, 0.7972, 0.7972, 0.8, 0.8, 0.8, 0.8, 0.8336, 0.8336, 0.838, 0.838, 0.85, 0.85, 0.876, 0.876, 0.889, 0.889, 0.914, 0.914, 0.954, 0.954, 0.96, 0.96, 0.9778, 0.9778, 0.9852, 0.9852, 0.9864, 0.9864, 0.992, 0.992, 0.999, 0.999, 1, 1, 1, 1, 1.0176, 1.0176, 1.0276, 1.0276, 1.03, 1.03, 1.0614, 1.0614, 1.068, 1.068, 1.106, 1.106, 1.1112, 1.1112, 1.144, 1.144, 1.1446, 1.1446, 1.1506, 1.1506, 1.16, 1.16, 1.1702, 1.1702, 1.1742, 1.1742, 1.1752, 1.1752, 1.182, 1.182, 1.2002, 1.2002, 1.2162, 1.2162, 1.2162, 1.2162, 1.2162, 1.2162, 1.22, 1.22, 1.233, 1.233, 1.244, 1.244, 1.258, 1.258, 1.26, 1.26, 1.296, 1.296, 1.334, 1.334, 1.3376, 1.3376, 1.3378, 1.3378, 1.3378, 1.3378, 1.3426, 1.3426, 1.3534, 1.3534, 1.36, 1.36, 1.372, 1.372, 1.3732, 1.3732, 1.3788, 1.3788, 1.4072, 1.4072, 1.41, 1.41, 1.448, 1.448, 1.4592, 1.4592, 1.4596, 1.4596, 1.4596, 1.4596, 1.48, 1.48, 1.486, 1.486, 1.524, 1.524, 1.53, 1.53, 1.56, 1.56, 1.564, 1.564, 1.58, 1.58, 1.5808, 1.5808, 1.5812, 1.5812, 1.5812, 1.5812, 1.602, 1.602, 1.64, 1.64, 1.6446, 1.6446, 1.6496, 1.6496, 1.6578, 1.6578, 1.6774, 1.6774, 1.678, 1.678, 1.68, 1.68, 1.689, 1.689, 1.7024, 1.7024, 1.7028, 1.7028, 1.7028, 1.7028, 1.716, 1.716, 1.754, 1.754, 1.76, 1.76, 1.7836, 1.7836, 1.792, 1.792, 1.824, 1.824, 1.8244, 1.8244, 1.8244, 1.8244, 1.83, 1.83, 1.868, 1.868, 1.906, 1.906, 1.944, 1.944, 1.982, 1.982, 2.02, 2.02, 2.058, 2.058, 2.08, 2.08, 2.096, 2.096, 2.134, 2.134, 2.174, 2.174, 2.212, 2.212, 2.25, 2.25, 2.288, 2.288, 2.326, 2.326, 2.364, 2.364, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.402, 2.402, 2.44, 2.44, 2.478, 2.478, 2.48, 2.48, 2.4938, 2.4938, 2.8892, 2.8892, 2.8892, 2.8892, 2.8892, 2.8892, 2.8994, 2.8994, 3, 3, 3.28, 3.28, 3.3, 3.3, 3.305, 3.305, 3.3336, 3.3336, 3.3336, 3.3336, 3.3336, 3.3336, 3.5618, 3.5618, 3.6, 3.6, 4.1296, 4.1296, 4.2, 4.2, 4.8, 4.8, 4.9264, 4.9264, 4.9464, 4.9464, 5, 5, 5.38, 5.38, 5.4886, 5.4886, 5.5, 5.5, 5.84, 5.84, 5.86, 5.86, 6, 6, 6.04, 6.04, 6.06, 6.06, 6.1284, 6.1284, 6.6672, 6.6672, 7, 7, 7, 7, 8.597, 8.597, 8.7494, 8.7494, 8.8084, 8.8084, 8.8538, 8.8538, 8.978, 8.978, 9, 9, 9.0014, 9.0014, 9.1952, 9.1952, 9.3064, 9.3064, 9.7396, 9.7396, 9.7786, 9.7786, 9.9766, 9.9766, 9.9766, 9.9766, 9.98, 9.98, 9.985, 9.985, 10, 10, 10, 10, 10, 10, 10.0022, 10.0022, 10.0022, 10.0022, 10.0022, 10.0022, 11.112, 11.112, 11.1144, 11.1144, 19.98, 19.98, 50, 50, 59.9882, 59.9882, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016,
200.016,200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016,
200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016,
200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016, 200.016,
0, 0, 0, 0, 0, 0
))
我尝试使用 r 中的 findinterval
为每一行创建一个新的 table
atest = as.data.frame ((table2$Price[findInterval(seq(table1$StartRow[1],table1$EndRow[1],by=1),table2$row)]))
names(atest)[1]= "te"
然后使用 which
查找值a = min(which ( table1$Price[1] > atest$te))
我仍然没有得到所需的输出
现在我需要 r 中的匹配列。有什么想法吗? [1]: https://i.stack.imgur.com/6OY2j.png [2]: https://i.stack.imgur.com/emMrD.png [3]: https://i.stack.imgur.com/0xXnn.png
您为此使用了任何应用函数。
使用mapply
:
table2$index <- 1:nrow(table2)
table1$match <- mapply(function(x, y, z) {
dat <- subset(table2, index >= x & index <= y)
which(dat$Price > z)[1]
}, table1$startRow, table1$EndRow, table1$Price)
我们在 table2
(index
) 中创建另一列来跟踪行号,该行号用于使用 startRow
和 EndRow
筛选行。