gpt4 book ai didi

r - 使用 R 中的匹配子类计算两个国家之间的相关性

转载 作者:行者123 更新时间:2023-12-04 07:22:13 25 4
gpt4 key购买 nike

我目前面临这个问题:
如何确保根据匹配的子类计算两个国家之间的相关性?
我担心两个国家之间的相关性可能是根据不匹配的子类(在我的数据集中命名为 IPC,例如 A01B、A01C)来计算的。有关错误示例,请参见图片。
Bad Example
相反,我想确保在两个国家之间的匹配维度上计算相关性,如下所示:

Good Example
理想情况下,我希望将所有国家/地区的相关矩阵作为避免上述问题的输出。另见此相关 post为一个可能的解决方案。
提前谢谢了!
我的数据集如下所示:

structure(list(LOCATION = c("AUS", "AUS", "AUS", "AUS", "AUS", 
"AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS",
"AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS",
"AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS",
"AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS",
"AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS",
"AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS",
"AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS",
"AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS",
"AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "DEU",
"DEU", "DEU", "DEU", "DEU", "DEU", "DEU", "DEU", "DEU", "DEU",
"DEU", "DEU", "DEU", "DEU", "DEU", "DEU", "DEU", "DEU", "DEU",
"DEU", "DEU", "DEU", "DEU", "DEU", "DEU", "DEU", "DEU", "DEU",
"DEU", "DEU", "DEU", "DEU", "DEU", "DEU", "DEU", "DEU", "DEU",
"DEU", "DEU", "DEU", "DEU", "DEU", "DEU", "DEU", "DEU", "DEU",
"DEU", "DEU", "DEU", "DEU", "DEU", "DEU", "DEU", "DEU", "DEU",
"DEU", "DEU", "DEU", "DEU", "DEU", "DEU", "DEU", "DEU", "DEU",
"DEU", "DEU", "DEU", "DEU", "DEU", "DEU", "DEU", "DEU", "DEU",
"DEU", "DEU", "DEU", "DEU", "DEU", "DEU", "DEU", "DEU", "DEU",
"DEU", "DEU", "DEU"), Country = c("Australia", "Australia", "Australia",
"Australia", "Australia", "Australia", "Australia", "Australia",
"Australia", "Australia", "Australia", "Australia", "Australia",
"Australia", "Australia", "Australia", "Australia", "Australia",
"Australia", "Australia", "Australia", "Australia", "Australia",
"Australia", "Australia", "Australia", "Australia", "Australia",
"Australia", "Australia", "Australia", "Australia", "Australia",
"Australia", "Australia", "Australia", "Australia", "Australia",
"Australia", "Australia", "Australia", "Australia", "Australia",
"Australia", "Australia", "Australia", "Australia", "Australia",
"Australia", "Australia", "Australia", "Australia", "Australia",
"Australia", "Australia", "Australia", "Australia", "Australia",
"Australia", "Australia", "Australia", "Australia", "Australia",
"Australia", "Australia", "Australia", "Australia", "Australia",
"Australia", "Australia", "Australia", "Australia", "Australia",
"Australia", "Australia", "Australia", "Australia", "Australia",
"Australia", "Australia", "Australia", "Australia", "Australia",
"Australia", "Australia", "Germany", "Germany", "Germany", "Germany",
"Germany", "Germany", "Germany", "Germany", "Germany", "Germany",
"Germany", "Germany", "Germany", "Germany", "Germany", "Germany",
"Germany", "Germany", "Germany", "Germany", "Germany", "Germany",
"Germany", "Germany", "Germany", "Germany", "Germany", "Germany",
"Germany", "Germany", "Germany", "Germany", "Germany", "Germany",
"Germany", "Germany", "Germany", "Germany", "Germany", "Germany",
"Germany", "Germany", "Germany", "Germany", "Germany", "Germany",
"Germany", "Germany", "Germany", "Germany", "Germany", "Germany",
"Germany", "Germany", "Germany", "Germany", "Germany", "Germany",
"Germany", "Germany", "Germany", "Germany", "Germany", "Germany",
"Germany", "Germany", "Germany", "Germany", "Germany", "Germany",
"Germany", "Germany", "Germany", "Germany", "Germany", "Germany",
"Germany", "Germany", "Germany", "Germany", "Germany", "Germany",
"Germany", "Germany", "Germany"), IPC = c("A01B", "A01C", "A01D",
"A01F", "A01G", "A01H", "A01J", "A01K", "A01L", "A01M", "A01N",
"A21B", "A21C", "A21D", "A22B", "A22C", "A23B", "A23C", "A23D",
"A23F", "A23G", "A23J", "A23K", "A23L", "A23N", "A23P", "A24B",
"A24C", "A24D", "A24F", "A41B", "A41C", "A41D", "A41F", "A41G",
"A41H", "A42B", "A42C", "A43B", "A43C", "A43D", "A44B", "A44C",
"A45B", "A45C", "A45D", "A45F", "A46B", "A46D", "A47B", "A47C",
"A47D", "A47F", "A47G", "A47H", "A47J", "A47K", "A47L", "A61B",
"A61C", "A61D", "A61F", "A61G", "A61H", "A61J", "A61K", "A61L",
"A61M", "A61N", "A61P", "A62B", "A62C", "A62D", "A63B", "A63C",
"A63D", "A63F", "A63G", "A63H", "A63J", "A63K", "F41A", "A01P",
"A61Q", "A99Z", "A01B", "A01C", "A01D", "A01F", "A01G", "A01H",
"A01J", "A01K", "A01L", "A01M", "A01N", "A21B", "A21C", "A21D",
"A22B", "A22C", "A23B", "A23C", "A23D", "A23F", "A23G", "A23J",
"A23K", "A23L", "A23N", "A23P", "A24B", "A24C", "A24D", "A24F",
"A41B", "A41C", "A41D", "A41F", "A41G", "A41H", "A42B", "A42C",
"A43B", "A43C", "A43D", "A44B", "A44C", "A45B", "A45C", "A45D",
"A45F", "A46B", "A46D", "A47B", "A47C", "A47D", "A47F", "A47G",
"A47H", "A47J", "A47K", "A47L", "A61B", "A61C", "A61D", "A61F",
"A61G", "A61H", "A61J", "A61K", "A61L", "A61M", "A61N", "A61P",
"A62B", "A62C", "A62D", "A63B", "A63C", "A63D", "A63F", "A63G",
"A63H", "A63J", "A63K", "F41A", "A01P", "A61Q", "A99Z"), Time = c(2000L,
2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L,
2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L,
2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L,
2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L,
2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L,
2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L,
2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L,
2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L,
2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L,
2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L,
2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L,
2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L,
2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L,
2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L,
2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L,
2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L,
2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L,
2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L,
2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L), Value = c(3.3333,
4.9167, 5, 0, 8.7639, 3.2835, 0.9236, 10.1159, 1, 5.8833, 15.9971,
0, 0.0625, 0.6667, 1.8333, 0.8125, 2, 0.7, 0.5611, 0, 4.525,
0.425, 2.0952, 9.0939, 1, 0.1625, 0, 0, 0, 1, 0, 0, 1.8333, 0.5,
0, 0, 2, 0, 2.6455, 1.4, 0, 0.9762, 0, 0, 0.6667, 1.4167, 1.8333,
1.5, 0, 1.8333, 10.9254, 0.2, 2.9167, 10.3389, 2.5556, 6.075,
1.5, 1.1, 40.7407, 6.2, 1.7357, 17.0141, 3.6046, 2.8333, 3.2108,
78.5226, 7.8589, 27.4342, 7.7542, 35.3732, 3.9167, 2.1667, 0.4615,
13.3333, 5.5167, 0, 13.9167, 0.3333, 4.2333, 0, 0, 1.9762, 0.25,
2.7989, 0, 3.29, 2.6667, 5.3333, 5.1667, 9.7125, 4.6444, 9.3667,
28.4773, 2.5, 6.25, 104.0737, 1.3667, 2.9833, 3.3, 2.1579, 12.575,
3.7256, 1.4904, 1.0278, 1.2167, 4.031, 2.2814, 11.3184, 27.9462,
1.5, 2.0896, 3, 3.1, 5.5333, 0.5667, 2.4777, 0, 10.8472, 0.3333,
0, 1.7, 3, 0, 8.2727, 2.6667, 1.6167, 9.9167, 1.5, 1, 6.5333,
12.0556, 1.75, 10.6357, 2.1429, 15.5, 25.8248, 0.8333, 3.5667,
9.575, 2.5833, 15.3905, 15.3224, 35.5274, 134.6058, 35.998, 1.5167,
83.7869, 13.9548, 9.5417, 12.5108, 502.65, 54.457, 55.5753, 20.5367,
250.0678, 8.35, 17.6833, 3.8556, 14.4708, 11.45, 0, 6.0885, 2.25,
5.4167, 1.5, 0, 12.1333, 0.8095, 65.8262, 0)), row.names = c(NA,
-170L), groups = structure(list(Country = c("Australia", "Australia",
"Australia", "Australia", "Australia", "Australia", "Australia",
"Australia", "Australia", "Australia", "Australia", "Australia",
"Australia", "Australia", "Australia", "Australia", "Australia",
"Australia", "Australia", "Australia", "Australia", "Australia",
"Australia", "Australia", "Australia", "Australia", "Australia",
"Australia", "Australia", "Australia", "Australia", "Australia",
"Australia", "Australia", "Australia", "Australia", "Australia",
"Australia", "Australia", "Australia", "Australia", "Australia",
"Australia", "Australia", "Australia", "Australia", "Australia",
"Australia", "Australia", "Australia", "Australia", "Australia",
"Australia", "Australia", "Australia", "Australia", "Australia",
"Australia", "Australia", "Australia", "Australia", "Australia",
"Australia", "Australia", "Australia", "Australia", "Australia",
"Australia", "Australia", "Australia", "Australia", "Australia",
"Australia", "Australia", "Australia", "Australia", "Australia",
"Australia", "Australia", "Australia", "Australia", "Australia",
"Australia", "Australia", "Australia", "Germany", "Germany",
"Germany", "Germany", "Germany", "Germany", "Germany", "Germany",
"Germany", "Germany", "Germany", "Germany", "Germany", "Germany",
"Germany", "Germany", "Germany", "Germany", "Germany", "Germany",
"Germany", "Germany", "Germany", "Germany", "Germany", "Germany",
"Germany", "Germany", "Germany", "Germany", "Germany", "Germany",
"Germany", "Germany", "Germany", "Germany", "Germany", "Germany",
"Germany", "Germany", "Germany", "Germany", "Germany", "Germany",
"Germany", "Germany", "Germany", "Germany", "Germany", "Germany",
"Germany", "Germany", "Germany", "Germany", "Germany", "Germany",
"Germany", "Germany", "Germany", "Germany", "Germany", "Germany",
"Germany", "Germany", "Germany", "Germany", "Germany", "Germany",
"Germany", "Germany", "Germany", "Germany", "Germany", "Germany",
"Germany", "Germany", "Germany", "Germany", "Germany", "Germany",
"Germany", "Germany", "Germany", "Germany", "Germany"), IPC = c("A01B",
"A01C", "A01D", "A01F", "A01G", "A01H", "A01J", "A01K", "A01L",
"A01M", "A01N", "A01P", "A21B", "A21C", "A21D", "A22B", "A22C",
"A23B", "A23C", "A23D", "A23F", "A23G", "A23J", "A23K", "A23L",
"A23N", "A23P", "A24B", "A24C", "A24D", "A24F", "A41B", "A41C",
"A41D", "A41F", "A41G", "A41H", "A42B", "A42C", "A43B", "A43C",
"A43D", "A44B", "A44C", "A45B", "A45C", "A45D", "A45F", "A46B",
"A46D", "A47B", "A47C", "A47D", "A47F", "A47G", "A47H", "A47J",
"A47K", "A47L", "A61B", "A61C", "A61D", "A61F", "A61G", "A61H",
"A61J", "A61K", "A61L", "A61M", "A61N", "A61P", "A61Q", "A62B",
"A62C", "A62D", "A63B", "A63C", "A63D", "A63F", "A63G", "A63H",
"A63J", "A63K", "A99Z", "F41A", "A01B", "A01C", "A01D", "A01F",
"A01G", "A01H", "A01J", "A01K", "A01L", "A01M", "A01N", "A01P",
"A21B", "A21C", "A21D", "A22B", "A22C", "A23B", "A23C", "A23D",
"A23F", "A23G", "A23J", "A23K", "A23L", "A23N", "A23P", "A24B",
"A24C", "A24D", "A24F", "A41B", "A41C", "A41D", "A41F", "A41G",
"A41H", "A42B", "A42C", "A43B", "A43C", "A43D", "A44B", "A44C",
"A45B", "A45C", "A45D", "A45F", "A46B", "A46D", "A47B", "A47C",
"A47D", "A47F", "A47G", "A47H", "A47J", "A47K", "A47L", "A61B",
"A61C", "A61D", "A61F", "A61G", "A61H", "A61J", "A61K", "A61L",
"A61M", "A61N", "A61P", "A61Q", "A62B", "A62C", "A62D", "A63B",
"A63C", "A63D", "A63F", "A63G", "A63H", "A63J", "A63K", "A99Z",
"F41A"), .rows = structure(list(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L,
9L, 10L, 11L, 83L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L,
20L, 21L, 22L, 23L, 24L, 25L, 26L, 27L, 28L, 29L, 30L, 31L,
32L, 33L, 34L, 35L, 36L, 37L, 38L, 39L, 40L, 41L, 42L, 43L,
44L, 45L, 46L, 47L, 48L, 49L, 50L, 51L, 52L, 53L, 54L, 55L,
56L, 57L, 58L, 59L, 60L, 61L, 62L, 63L, 64L, 65L, 66L, 67L,
68L, 69L, 70L, 84L, 71L, 72L, 73L, 74L, 75L, 76L, 77L, 78L,
79L, 80L, 81L, 85L, 82L, 86L, 87L, 88L, 89L, 90L, 91L, 92L,
93L, 94L, 95L, 96L, 168L, 97L, 98L, 99L, 100L, 101L, 102L,
103L, 104L, 105L, 106L, 107L, 108L, 109L, 110L, 111L, 112L,
113L, 114L, 115L, 116L, 117L, 118L, 119L, 120L, 121L, 122L,
123L, 124L, 125L, 126L, 127L, 128L, 129L, 130L, 131L, 132L,
133L, 134L, 135L, 136L, 137L, 138L, 139L, 140L, 141L, 142L,
143L, 144L, 145L, 146L, 147L, 148L, 149L, 150L, 151L, 152L,
153L, 154L, 155L, 169L, 156L, 157L, 158L, 159L, 160L, 161L,
162L, 163L, 164L, 165L, 166L, 170L, 167L), ptype = integer(0), class = c("vctrs_list_of",
"vctrs_vctr", "list"))), row.names = c(NA, -170L), class = c("tbl_df",
"tbl", "data.frame"), .drop = TRUE), class = c("grouped_df",
"tbl_df", "tbl", "data.frame"))

最佳答案

一种方法是:将每个国家/地区的数据分开并通过 IPC 将这些 data.frames 连接在一起

library(dplyr)

data %>%
filter(LOCATION == "AUS") %>%
full_join(data %>% filter(LOCATION == "DEU"), by="IPC")
返回
# A tibble: 85 x 9
# Groups: IPC [85]
LOCATION.x Country.x IPC Time.x Value.x LOCATION.y Country.y Time.y Value.y
<chr> <chr> <chr> <int> <dbl> <chr> <chr> <int> <dbl>
1 AUS Australia A01B 2000 3.33 DEU Germany 2000 3.29
2 AUS Australia A01C 2000 4.92 DEU Germany 2000 2.67
3 AUS Australia A01D 2000 5 DEU Germany 2000 5.33
4 AUS Australia A01F 2000 0 DEU Germany 2000 5.17
5 AUS Australia A01G 2000 8.76 DEU Germany 2000 9.71
6 AUS Australia A01H 2000 3.28 DEU Germany 2000 4.64
7 AUS Australia A01J 2000 0.924 DEU Germany 2000 9.37
8 AUS Australia A01K 2000 10.1 DEU Germany 2000 28.5
9 AUS Australia A01L 2000 1 DEU Germany 2000 2.5
10 AUS Australia A01M 2000 5.88 DEU Germany 2000 6.25
# ... with 75 more rows
所以 Value.x是澳大利亚的值(value)观, Value.y德国的。自从我们加入 IPC这些值属于匹配的子类。
确保处理缺失值,也许看看匹配 Time的,如果有必要。

关于r - 使用 R 中的匹配子类计算两个国家之间的相关性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68422786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com