Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 连接来自不同季节/年份的两个数据集,与体育相关(例如,NHL,1991年和1992年的季节)_R_Dataframe_Statistics_Dataset - Fatal编程技术网

R 连接来自不同季节/年份的两个数据集,与体育相关(例如,NHL,1991年和1992年的季节)

R 连接来自不同季节/年份的两个数据集,与体育相关(例如,NHL,1991年和1992年的季节),r,dataframe,statistics,dataset,R,Dataframe,Statistics,Dataset,我有NHL团队的数据集,在一定的年限内。我想知道连接这些数据集的最佳方法。例如,我有芝加哥黑鹰队1991年和1992年的统计数据,包括比赛(GP)、胜(W)、负(L)等等 在不创建两个单独的列GP.x和GP.y的情况下,如何将这些集合连接在一起 我使用dput()获得了前十支球队及其各自的统计数据: 我知道加入这些团队可能是。。。很难,但是任何建议/想法都会很好!谢谢 问题是,如果尝试合并、连接或cbind两个具有相同列名的数据帧,则可能会给您提供类似GP.x的列名,而您曾说过不需要这样的

我有NHL团队的数据集,在一定的年限内。我想知道连接这些数据集的最佳方法。例如,我有芝加哥黑鹰队1991年和1992年的统计数据,包括比赛(GP)、胜(W)、负(L)等等

在不创建两个单独的列GP.x和GP.y的情况下,如何将这些集合连接在一起

我使用dput()获得了前十支球队及其各自的统计数据:





我知道加入这些团队可能是。。。很难,但是任何建议/想法都会很好!谢谢

问题是,如果尝试合并、连接或
cbind
两个具有相同列名的数据帧,则可能会给您提供类似
GP.x
的列名,而您曾说过不需要这样的列名,或者在尝试创建具有相同名称的多个列时会抛出错误。您可以验证两个数据框是否具有相同的列名,如下所示:

名称(df91)=名称(df92)
#>[1]真实真实真实
#>[15]真的
#>[29]是的
例如,将所有GP观察值放在一列
GP
下更符合逻辑,在该列中,观察值与发生年份进行了划分,而不是两列
GP
并且没有明确的方法知道哪一列是哪一年。如果你在收集分数数据,这也不会很好地扩展,我猜在某个时候你会想要比这两年更多的数据

相反,您希望绑定行。您可以为每个数据框指定一列年份,并在基本R中使用
rbind
将它们绑定到一个数据框中

df91$year 3 St.Louis Blues*80 47 22 11 105.656 310 250 0.70-0.05 7.00 230
#>4洛杉矶国王队*80 46 24 10 102.638 340 254 1.04-0.04 7.43 252
#>5波士顿布鲁因*80 44 24 12 100.625 299 264 0.32-0.12 7.04 214
#>6卡尔加里火焰*8046268100.6253442630.98-0.037.59236
#>7加拿大蒙特利尔*80 39 30 11 89.556 273 249 0.20-0.10 6.53 201
#>EVGA PP PPO PP%PPA PPOA PK%SH SHA PIM/G oPIM/G S%SA SV%
#> 2  132 87 393 22.14  68  425 84.00 20  10  29.9   28.2 2564 11.1 2214 .905
#> 3  177 70 348 20.11  55  339 83.78 10  18  24.6   25.3 2550 12.2 2345 .893
#> 4  173 80 391 20.46  63  370 82.97  8  18  27.6   30.5 2410 14.1 2412 .895
#> 5  192 74 351 21.08  64  368 82.61 11   8  20.8   23.3 2512 11.9 2240 .882
#> 6  178 91 384 23.70  77  420 81.67 17   8  27.1   25.9 2604 13.2 2200 .880
#> 7  185 66 357 18.49  54  282 80.85  6  10  17.6   19.5 2385 11.4 2316 .892
#>PDO年
#> 2     1991
#> 3     1991
#> 4     1991
#> 5     1991
#> 6     1991
#> 7     1991
或者,您可以使用
dplyr
bind_rows
mutate
一步创建年份列
bind_rows
的另一个优点是不限于2个参数,因此,如果您拥有的数据超过了这两年的数据量,则可以对其进行缩放

df_dplyr团队总成,包括临时技术秘书处%GF GA SRS SOS TG/G EVGF
#>1芝加哥黑鹰队*80 49 23 8 106.663 284 211 0.85-0.06 6.19 177
#>2圣路易斯蓝调*80 47 22 11 105.656 310 250 0.70-0.05 7.00 230
#>3洛杉矶国王队*80 46 24 10 102.638 340 254 1.04-0.04 7.43 252
#>4波士顿布鲁因*80 44 24 12 100.625 299 264 0.32-0.12 7.04 214
#>5卡尔加里火焰*8046268100.6253442630.98-0.037.59236
#>6加拿大蒙特利尔*80 39 30 11 89.556 273 249 0.20-0.10 6.53 201
#>EVGA PP PPO PP%PPA PPOA PK%SH SHA PIM/G oPIM/G S%SA SV%
#> 1  132 87 393 22.14  68  425 84.00 20  10  29.9   28.2 2564 11.1 2214 .905
#> 2  177 70 348 20.11  55  339 83.78 10  18  24.6   25.3 2550 12.2 2345 .893
#> 3  173 80 391 20.46  63  370 82.97  8  18  27.6   30.5 2410 14.1 2412 .895
#> 4  192 74 351 21.08  64  368 82.61 11   8  20.8   23.3 2512 11.9 2240 .882
#> 5  178 91 384 23.70  77  420 81.67 17   8  27.1   25.9 2604 13.2 2200 .880
#> 6  185 66 357 18.49  54  282 80.85  6  10  17.6   19.5 2385 11.4 2316 .892
#>PDO年
#> 1     1991
#> 2     1991
#> 3     1991
#> 4     1991
#> 5     1991
#> 6     1991

由(v0.2.0)于2018年6月18日创建。

问题是,尝试合并、连接或
cbind
两个具有相同列名的数据帧,或者会给您提供您不想要的
GP.x
等列名,或者在尝试创建具有相同名称的多个列时会抛出错误。您可以验证两个数据框是否具有相同的列名,如下所示:

名称(df91)=名称(df92)
#>[1]真实真实真实
#>[15]真的
#>[29]是的
例如,将所有GP观察值放在一列
GP
下更符合逻辑,在该列中,观察值与发生年份进行了划分,而不是两列
GP
并且没有明确的方法知道哪一列是哪一年。如果你在收集分数数据,这也不会很好地扩展,我猜在某个时候你会想要比这两年更多的数据

相反,您希望绑定行。您可以为每个数据框指定一列年份,并在基本R中使用
rbind
将它们绑定到一个数据框中

df91$year 3 St.Louis Blues*80 47 22 11 105.656 310 250 0.70-0.05 7.00 230
#>4洛杉矶国王队*80 46 24 10 102.638 340 254 1.04-0.04 7.43 252
#>5波士顿布鲁因*80 44 24 12 100.625 299 264 0.32-0.12 7.04 214
#>6卡尔加里火焰*8046268100.6253442630.98-0.037.59236
#>7加拿大蒙特利尔*80 39 30 11 89.556 273 249 0.20-0.10 6.53 201
#>EVGA PP PPO PP%PPA PPOA PK%
# 1991 team stats - first ten teams

structure(list(Team = c("Chicago Blackhawks*", "St. Louis Blues*", 
   "Los Angeles Kings*", "Boston Bruins*", "Calgary Flames*", 
   "Montreal Canadiens*", "Pittsburgh Penguins*", "New York Rangers*", 
   "Washington Capitals*", "Buffalo Sabres*"), 
GP = c("80", "80", "80", "80", "80", "80", "80", "80", "80", "80"), 
W = c("49", "47", "46", "44", "46", "39", "41", "36", "37", "31"), 
L = c("23", "22", "24", "24", "26", "30", "33", "31", "36", "30"), 
T = c("8", "11", "10", "12", "8", "11", "6", "13", "7", "19"), 
Pts = c("106", "105", "102", "100", "100", "89", "88", "85", "81","81"), 
`Pts %` = c(".663", ".656", ".638", ".625", ".625", ".556", ".550", 
   ".531", ".506", ".506"), 
GF = c("284", "310", "340", "299", "344", "273", "342", "297", "258", 
   "292"), 
GA = c("211", "250", "254", "264", "263", "249", "305", "265", "258", 
   "278"), 
SRS = c("0.85", "0.70", "1.04", 
   "0.32", "0.98", "0.20", "0.42", "0.36", "0.00", "0.08"), 
SOS = c("-0.06", "-0.05", "-0.04", "-0.12", "-0.03", "-0.10", "-0.04", 
   "-0.04", "0.00", "-0.09"), 
`TG/G` = c("6.19", "7.00", "7.43", "7.04", "7.59", "6.53", "8.09", 
   "7.03", "6.45", "7.13"), 
EVGF = c("177", "230", "252", "214", "236", "201", "241", "197", "181", 
   "204"), 
EVGA = c("132", "177", "173", "192", "178", "185", "220", "182", "199", 
   "208"), 
PP = c("87", "70", "80", "74", "91", "66", "89", "91", "64", "73"), 
PPO = c("393", "348", "391", "351", "384", "357", "388", "389", "340", 
   "400"), 
`PP%` = c("22.14", "20.11", "20.46", "21.08", "23.70", "18.49", "22.94", 
   "23.39", "18.82", "18.25"), 
PPA = c("68", "55", "63", "64", "77", "54", "73", "73", "44", "62"), 
PPOA = c("425", "339", "370", "368", "420", "282", "351", "362", "314", 
   "368"), 
`PK%` = c("84.00", "83.78", "82.97", "82.61", "81.67", "80.85", "79.20", 
   "79.83", "85.99", "83.15"), 
SH = c("20", "10", "8", "11", "17", "6", "12", "9", "13", "15"), 
SHA = c("10", "18", "18", "8", "8", "10", "12", "10", "15", "8"), 
`PIM/G` = c("29.9", "24.6", "27.6", "20.8", "27.1", "17.6", "20.4", 
   "23.4", "22.8", "21.3"), 
`oPIM/G` = c("28.2", "25.3", "30.5", "23.3", "25.9", "19.5", "21.3", 
   "24.1", "25.3", "22.1"), 
S = c("2564", "2550", "2410", "2512", "2604", "2385", "2416", "2444", 
   "2370", "2410"), 
`S%` = c("11.1", "12.2", "14.1", "11.9", "13.2", "11.4", "14.2", "12.2", 
   "10.9", "12.1"), 
SA = c("2214", "2345", "2412", "2240", "2200", "2316", "2723", "2550", 
   "2112", "2432"), 
`SV%` = c(".905", ".893", ".895", ".882", ".880", ".892", 
   ".888", ".896", ".878", ".886"),
PDO = c("", "", "", "", "", "", "", "", "", "")), 
.Names = c("Team", "GP", "W", "L", "T", "Pts", "Pts %", "GF", "GA", 
   "SRS", "SOS", "TG/G", "EVGF", "EVGA", "PP", "PPO", "PP%", "PPA", 
   "PPOA", "PK%", "SH", "SHA", "PIM/G", "oPIM/G", "S", "S%", "SA", 
   "SV%", "PDO"), 
row.names = 2:11, class = "data.frame")
# 1992 team stats - first ten teams

structure(list(Team = c("New York Rangers*", "Washington Capitals*", 
   "Detroit Red Wings*", "Vancouver Canucks*", "Montreal Canadiens*", 
   "Pittsburgh Penguins*", "Chicago Blackhawks*", "New Jersey Devils*", 
   "Boston Bruins*", "Los Angeles Kings*"), 
GP = c("80", "80", "80", 
   "80", "80", "80", "80", "80", "80", "80"),
W = c("50", "45", "43", "42", "41", "39", "36", "38", "36", "35"),
L = c("25", "27", "25", "26", "28", "32", "29", "31", "32", "31"), 
T = c("5", "8", "12", "12", "11", "9", "15", "11", "12", "14"), 
Pts = c("105", "98", "98", "96", "93", "87", "87", "87", "84", "84"), 
`Pts %` = c(".656", ".613", ".613", ".600", ".581", ".544", ".544", 
   ".544", ".525", ".525"), 
GF = c("321", "330", "320", "285", "267", "343", "257", "289", "270", 
   "287"), 
GA = c("246", "275", "256", "250", 
   "207", "308", "236", "259", "275", "296"), 
SRS = c("1.02", "0.78", "0.74", "0.31", "0.64", "0.52", "0.22", "0.48", 
   "-0.09", "-0.19"), 
SOS = c("0.08", "0.09", "-0.06", "-0.13", "-0.12", "0.08", "-0.04", 
   "0.10", "-0.03", "-0.08"), 
`TG/G` = c("7.09", "7.56", "7.20", "6.69", "5.93", "8.14", "6.16", 
   "6.85", "6.81", "7.29"), 
EVGF = c("226", "224", "230", "188", "189", "235", "165", "215", "186", 
   "197"), 
EVGA = c("174", "200", "171", "167", "142", "217", "150", "181", "189", 
   "208"), 
PP = c("81", "92", "72", "85", "74", "92", "81", "59", "77", "79"), 
PPO = c("387", "412", "386", "439", "379", "423", "467", "338", "406", 
   "411"), 
`PP%` = c("20.93", "22.33", "18.65", "19.36", "19.53", "21.75", "17.34", 
   "17.46", "18.97", "19.22"), 
PPA = c("60", "60", "78", "76", "60", "77", "76", "68", "72", "76"), 
PPOA = c("395", "368", "419", "382", "320", "383", "482", "374", "363", 
   "417"), 
`PK%` = c("84.81", "83.70", "81.38", "80.10", "81.25", "79.90", 
   "84.23", "81.82", "80.17", "81.77"), 
SH = c("14", "14", "18", 
   "12", "4", "16", "11", "15", "7", "11"), 
SHA = c("12", "15", 
   "7", "7", "5", "14", "10", "10", "14", "12"), 
`PIM/G` = c("22.4", "21.8", "25.6", "25.7", "19.3", "23.7", "33.0", 
   "20.0", "21.8", "26.9"), 
`oPIM/G` = c("24.1", "24.2", "23.9", "28.4", "22.0", 
   "23.9", "31.8", "20.4", "23.7", "25.6"), 
S = c("2632", "2481", "2478", "2669", "2443", "2542", "2646", "2495", 
   "2664", "2419"), 
`S%` = c("12.2", "13.3", "12.9", "10.7", "10.9", "13.5", "9.7", 
   "11.6", "10.1", "11.9"), 
SA = c("2543", "2270", "2238", "2299", "2227", "2518", "2028", "2290", 
   "2339", "2663"), 
`SV%` = c(".903", ".879", ".886", ".891", ".907", ".878", ".884", 
   ".887", ".882", ".889"), 
PDO = c("", "", "", "", "", "", "", "", "", "")), 
.Names = c("Team", "GP", "W", "L", "T", "Pts", "Pts %", "GF", "GA", 
   "SRS", "SOS", "TG/G", "EVGF", "EVGA", "PP", "PPO", "PP%", "PPA", 
   "PPOA", "PK%", "SH", "SHA", "PIM/G", "oPIM/G", "S", "S%", "SA", 
   "SV%", "PDO"), 
row.names = 2:11, class = "data.frame")