大家节日快乐!
这个网站对我过去的编程需求特别有帮助,所以我希望你能帮我解决这个问题,同时我也被困住了:)
上下文
目前,我有一个被称为wc_match_data的足球比赛的数据框架。如下所示:
type_id tourn_id day month year team_A score_A score_B team_B win loss
f wc_1934 27 5 1934 Germany 5 2 Belgium Germany Belgium我无法对最后一列draw的数据进行拟合,但如果匹配是抽签,则draw列基本上是TRUE,如果不是,则为FALSE。在抽签的情况下,赢和输列都是由DRAW填充的。
type_id要么是f,要么是q,取决于比赛是世界杯预选赛还是世界杯决赛。tourn_id指的是比赛的目的,无论是预选赛还是决赛。
我想做什么
我基本上是在尝试为每个世界杯年份(1930年、1934年、1950年、1954年等)创建一个新的数据框架列表。每个新数据帧的第一列应该仅为参加世界杯的国家(因此,在每一届锦标赛中都会发生变化)。
以下是我正在做的事情
# Create tournament vector (20 total)
wc_years <- levels(wc_match_data$tourn_id)
# Create empty list
wc_dataframes <- list()
# Filter
wc_dataframes <- lapply(wc_years, function(year)
data.frame(subset(wc_match_data, tourn_id == year))这对我没用。它确实创建了一个包含20个元素的列表,但是当我在我的环境中查看它时,一切都是无法识别的,20个数据帧中的每个元素的tourn_id列都表示它有20个级别,这显然不是我想要的。应该只有一个。我很迷茫,谁能给我指明正确的方向?如果能让事情变得更简单的话,我很乐意把我的数据发给你。
最后一个音符
如您所知,我甚至还没有为将独特的国家纳入lapply函数而烦恼。我知道这个密码:
unique(c(as.character(unique(wc_match_data$team_A)),
as.character(unique(wc_match_data$team_B))))将返回所有世界杯的独特国家名单,但我需要这些为每一个世界杯,我真的不知道如何做。
提前感谢您的帮助,祝您节日快乐!我希望这个问题能对将来的人有所帮助:)
发布于 2017-12-27 15:07:24
你在找split函数吗?基本上,在您的情况下,您将使用该年作为您的拆分因子。让我展示一个使用此函数的示例:
set.seed(1)
dat=data.frame(matrix(rnorm(10*5),10,5))
split(dat,rep(1:5,each=2))
$`1`
X1 X2 X3 X4 X5
1 -0.6264538 1.5117812 0.9189774 1.3586796 -0.1645236
2 0.1836433 0.3898432 0.7821363 -0.1027877 -0.2533617
$`2`
X1 X2 X3 X4 X5
3 -0.8356286 -0.6212406 0.07456498 0.38767161 0.6969634
4 1.5952808 -2.2146999 -1.98935170 -0.05380504 0.5566632
$`3`
X1 X2 X3 X4 X5
5 0.3295078 1.12493092 0.61982575 -1.3770596 -0.6887557
6 -0.8204684 -0.04493361 -0.05612874 -0.4149946 -0.7074952
$`4`
X1 X2 X3 X4 X5
7 0.4874291 -0.01619026 -0.1557955 -0.3942900 0.3645820
8 0.7383247 0.94383621 -1.4707524 -0.0593134 0.7685329
$`5`
X1 X2 X3 X4 X5
9 0.5757814 0.8212212 -0.4781501 1.1000254 -0.1123462
10 -0.3053884 0.5939013 0.4179416 0.7631757 0.8811077https://stackoverflow.com/questions/47994225
复制相似问题