输入:
| 原始_Hubname| Active_Hubname| PIN码_需求| Pincode_demand |
| --|--|--| ------------ |
| 昂莫基奥|果园路|10个| 10 |
| 昂莫基奥|昂莫基奥|二十五| 25 |
| 果园路|果园路|二十| 20 |
| 果园路|昂莫基奥|三十五| 35 |
| 思美|碧山|二十| 20 |
| 碧山|思美|十五岁| 15 |
| 洛荣|坦皮恩|四十| 40 |
| 坦皮恩|坦皮恩|10个| 10 |
| 林地|义顺|三十| 30 |
| 义顺|林地|二十五| 25 |
| 义顺|帕西尔里斯|五| 5 |
| 帕西尔里斯|义顺|三十| 30 |
| 帕西尔里斯|帕西尔里斯|五十| 50 |
所需输出:
| Hubname|比率| Ratio |
| --|--| ------------ |
| 果园路|0.33| 0.33 |
| 昂莫基奥|零点六七| 0.67 |
| 碧山|0.57| 0.57 |
| 思美|0.43| 0.43 |
| 洛荣|0| 0 |
| 坦皮恩|1| 1 |
| 义顺|0.43| 0.43 |
| 林地|0.18| 0.18 |
| 帕西尔里斯|0.39| 0.39 |
通过我下面的代码设置不正确,因此比率也不正确计算。
Rscript:
data<-Input
filtered_data <- subset(data, Original_Hubname != Active_Hubname)
unique_hubs <- unique(filtered_data[, c("Original_Hubname", "Active_Hubname")])
result <- data.frame(Set = integer(), Hubname = character(), Ratio = numeric(), stringsAsFactors = FALSE)
set_counter <- 1
for (i in 1:nrow(unique_hubs)) {
original_hub <- unique_hubs$Original_Hubname[i]
active_hub <- unique_hubs$Active_Hubname[i]
original_demand <- data$pc_demand[data$Original_Hubname == original_hub]
active_demand <- data$pc_demand[data$Active_Hubname == active_hub]
total_demand <- sum(original_demand) + sum(active_demand)
if (total_demand > 0) {
ratio_original <- sum(original_demand) / total_demand
ratio_active <- sum(active_demand) / total_demand
if (!(original_hub %in% result$Hubname)) {
result <- rbind(result, data.frame(Set = set_counter, Hubname = original_hub, Ratio = ratio_original))
}
if (!(active_hub %in% result$Hubname)) {
result <- rbind(result, data.frame(Set = set_counter, Hubname = active_hub, Ratio = ratio_active))
}
set_counter <- set_counter + 1
}
}
result <- na.omit(result)
字符串
该代码应该能够使所有枢纽之间的pincode交换发生在之间的枢纽集。
预期输出:
| Hubname|比率| Ratio |
| --|--| ------------ |
| 果园路|0.33| 0.33 |
| 昂莫基奥|零点六七| 0.67 |
| 碧山|0.57| 0.57 |
| 思美|0.43| 0.43 |
| 洛荣|0| 0 |
| 坦皮恩|1| 1 |
| 义顺|0.43| 0.43 |
| 林地|0.18| 0.18 |
| 帕西尔里斯|0.39| 0.39 |
代码输出:
| Hubname|比率| Ratio |
| --|--| ------------ |
| 昂莫基奥|0.5384615385| 0.5384615385 |
| 果园路|0.4615384615| 0.4615384615 |
| 思美|0.5| 0.5 |
| 碧山|0.5| 0.5 |
| 洛荣|0.444444444| 0.4444444444 |
| 坦皮恩|0.5555555556| 0.5555555556 |
| 林地|0.333333333| 0.3333333333 |
| 义顺|0.666666667| 0.6666666667 |
| 巴西里斯|0.6470588235| 0.6470588235 |
1条答案
按热度按时间bnlyeluc1#
你的代码有两个主要问题:
unique_hubs$Original_Hubname
包含两次“义顺”。你必须正确地考虑到这一点。将两个条目合并为一个,粘贴Active_Hubname
并继续(详细信息留给您):字符串
1.请注意,
original_demand
必须使用Active_Hubname
计算:型
考虑到这两点,就会得出预期的结果:
型