创建一个循环以在 R 包 GameTheory 中使用它
Creating a loop to utilise it in R package GameTheory
我正在使用 R 包 GameTheory 来计算 Shapley-Shubik 幂指数。命令本身非常简单,
ShapleyShubik(quota, y, Names = NULL)
其中 quota 是通过投票的最低票数,每个政党的 y 个席位(数量)和 Names 是政党的标签。使用起来很简单 'manually',但我想扩展我的用法以使其自动化以遍历在数据帧 DF 中编译的大量数据。
我的数据框 DF 包括四列:AREA、PARTY LABEL、PARTYSEATS 和 MAJORITY:
AREA PARTY LABEL PARTYSEATS MAJORITY
Area 1 A 5 5
Area 1 B 2 5
Area 1 C 1 5
Area 2 B 4 6
Area 2 D 6 6
Area 3 A 3 7
Area 3 C 4 7
Area 3 D 5 7
我无法为此提供可重现的示例,因为我还没有弄清楚如何为命令提供所需的循环以遍历列表。由于计算必须基于区域,我认为应该以某种方式告诉它逐个考虑区域(unique(DF$AREA)
?)。配额对我来说也是一个挑战,因为它只需要'by one value',因为它对一个特定区域的所有各方都是一样的。
我还想到了'splitting'多个新数据帧的数据(逐个区域)使用
list2env(split(DF,DF$AREA),envir = .GlobalEnv)
这是成功的,但我不认为这是一个可行的选择,因为多个区域会使工作区变得非常杂乱无章。
免责声明我之前没有使用过这个包,请仔细查看结果。
- 正在准备数据
df = structure(list(AREA = c("Area 1", "Area 1", "Area 1", "Area 2",
"Area 2", "Area 3", "Area 3", "Area 3"), PARTYLABEL = c("A",
"B", "C", "B", "D", "A", "C", "D"), PARTYSEATS = c(5, 2, 1, 4,
6, 3, 4, 5), MAJORITY = c(5, 5, 5, 6, 6, 7, 7, 7)), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -8L))
- 加载包并制作每个区域的模型
library(tidyverse)
library(GameTheory)
out <- df %>%
group_by(AREA) %>%
nest() %>%
mutate(models = map(data, ~ ShapleyShubik(head(.x[[3]], 1), .x[[2]], .x[[1]])))
基于示例?ShapleyShubik
我相信您正在寻找与上述类似的内容。
然后可以调用summary
提取一些信息。
lapply(out$models, summary)
我正在使用 R 包 GameTheory 来计算 Shapley-Shubik 幂指数。命令本身非常简单,
ShapleyShubik(quota, y, Names = NULL)
其中 quota 是通过投票的最低票数,每个政党的 y 个席位(数量)和 Names 是政党的标签。使用起来很简单 'manually',但我想扩展我的用法以使其自动化以遍历在数据帧 DF 中编译的大量数据。
我的数据框 DF 包括四列:AREA、PARTY LABEL、PARTYSEATS 和 MAJORITY:
AREA PARTY LABEL PARTYSEATS MAJORITY
Area 1 A 5 5
Area 1 B 2 5
Area 1 C 1 5
Area 2 B 4 6
Area 2 D 6 6
Area 3 A 3 7
Area 3 C 4 7
Area 3 D 5 7
我无法为此提供可重现的示例,因为我还没有弄清楚如何为命令提供所需的循环以遍历列表。由于计算必须基于区域,我认为应该以某种方式告诉它逐个考虑区域(unique(DF$AREA)
?)。配额对我来说也是一个挑战,因为它只需要'by one value',因为它对一个特定区域的所有各方都是一样的。
我还想到了'splitting'多个新数据帧的数据(逐个区域)使用
list2env(split(DF,DF$AREA),envir = .GlobalEnv)
这是成功的,但我不认为这是一个可行的选择,因为多个区域会使工作区变得非常杂乱无章。
免责声明我之前没有使用过这个包,请仔细查看结果。
- 正在准备数据
df = structure(list(AREA = c("Area 1", "Area 1", "Area 1", "Area 2",
"Area 2", "Area 3", "Area 3", "Area 3"), PARTYLABEL = c("A",
"B", "C", "B", "D", "A", "C", "D"), PARTYSEATS = c(5, 2, 1, 4,
6, 3, 4, 5), MAJORITY = c(5, 5, 5, 6, 6, 7, 7, 7)), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -8L))
- 加载包并制作每个区域的模型
library(tidyverse)
library(GameTheory)
out <- df %>%
group_by(AREA) %>%
nest() %>%
mutate(models = map(data, ~ ShapleyShubik(head(.x[[3]], 1), .x[[2]], .x[[1]])))
基于示例?ShapleyShubik
我相信您正在寻找与上述类似的内容。
然后可以调用summary
提取一些信息。
lapply(out$models, summary)