代码之家  ›  专栏  ›  技术社区  ›  Julian

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

  •  0
  • Julian  · 技术社区  · 8 年前

    祝大家节日快乐!

    这个网站对我过去的编程需求特别有帮助,所以我希望你能在这里帮助我,因为我有点困了:)

    上下文

    目前,我有一个充满足球比赛的数据框,叫做 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 ,但基本上 列为 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个元素的列表,但当我在我的环境中查看时,一切都是无法识别的 tourn\u id 20个数据帧中每一个的列都表示它有20个级别,这显然不是我想要的。应该只有一个。我迷路了,有人能给我指出正确的方向吗?如果这能让事情变得更简单的话,我很乐意向你发送我的数据。

    最后一个注释

    正如你所知道的,我甚至没有费心把这些独特的国家纳入 lapply 功能尚未发挥。我知道该代码:

    unique(c(as.character(unique(wc_match_data$team_A)),
                          as.character(unique(wc_match_data$team_B))))
    

    将返回所有世界杯的唯一国家名单,但我需要这些 每个 个人世界杯,我真的不知道该怎么办。

    提前非常感谢您的帮助,节日快乐!我希望这个问题能对未来的人们有所帮助:)

    1 回复  |  直到 8 年前
        1
  •  2
  •   Onyambu    8 年前

    你在找 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