使用lapply将单个数据帧子集化为R中的数据帧列表

问题描述 投票:0回答:1

大家节日快乐!

这个网站对我以前的编程需求特别有用,所以我希望你能帮到我这里以及我有点卡住了:)

Context

目前,我的数据框中充满了名为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_idfq,取决于比赛是世界杯预选赛还是世界杯决赛。 tourn_id指的是比赛的比赛,无论是资格赛还是决赛。

What I Want To Do

我基本上试图为每个世界杯年(1930年,1934年,1950年,1954年等)创建一个新的数据框列表。这些新数据框架中的每一个的第一列应该只是参加世界杯锦标赛的国家(因此它在每场比赛中都会发生变化)。

Here is what I'm doing

# 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))))

将返回所有世界杯的唯一国家名单,但我会为每个世界杯需要这些,我无法弄清楚如何做到这一点。

非常感谢您的帮助和节日快乐!我希望这个问题能够在未来帮助人们:)

r dataframe unique subset lapply
1个回答
2
投票

你在寻找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.8811077
© www.soinside.com 2019 - 2024. All rights reserved.