【问题标题】:Creating multiple subset dataframes创建多个子集数据框
【发布时间】:2018-04-07 22:56:41
【问题描述】:

我是 R 新手(和一般编程),目前正在尝试弄清楚如何从一个大文件创建多个数据框子集,而不必使用 subset 函数来创建每个单独的数据框。这是一个例子。

假设我有很多足球比赛,每一个都用一个数字指定。然后我会列出每场比赛中涉及的位置(接球手、近端锋等),然后列出最终的码数。

如何为每次播放(play1、play2 等)创建单独的数据帧,而不为每次播放复制和粘贴单独的 subset 函数?当有 100 次以上的游戏/游戏时,它会变得非常沉重。这是一个小示例图表:

Play    Play.des    result
1        WR1          -5
1        WR2          -5
1        OL           -5
1        WR3          -5
1        WR4          -5
1        RB           -5
1        QB           -5
2        WR1           7
2        WR2           7
2         OL           7
2        WR3           7
2        RB            7
2        RB            7
2        QB            7
3       WR1           24
3       WR2           24
3        OL           24
3       WR3           24
3       WR4           24
3        RB           24
3        QB           24
4       WR1           -2
4       TE            -2
4       OL            -2
4       TE            -2
4       WR4           -2
4       RB            -2
4       QB            -2

【问题讨论】:

    标签: r dataframe subset


    【解决方案1】:

    一种选择是将split 函数用作:

    dfs <- split(df, unique(df$Play))
    
    dfs$`1`
    
    # Play Play.des result
    # 1     1      WR1     -5
    # 5     1      WR4     -5
    # 9     2      WR2      7
    # 13    2       RB      7
    # 17    3       OL     24
    # 21    3       QB     24
    # 25    4       TE     -2
    
    dfs$`2`
    
    # Play Play.des result
    # 2     1      WR2     -5
    # 6     1       RB     -5
    # 10    2       OL      7
    # 14    2       QB      7
    # 18    3      WR3     24
    # 22    4      WR1     -2
    # 26    4      WR4     -2
    
    # Similarly 3rd and 4th can be accessed. 
    

    数据:

    df <- read.table(text = 
    "Play    Play.des    result
    1        WR1          -5
    1        WR2          -5
    1        OL           -5
    1        WR3          -5
    1        WR4          -5
    1        RB           -5
    1        QB           -5
    2        WR1           7
    2        WR2           7
    2         OL           7
    2        WR3           7
    2        RB            7
    2        RB            7
    2        QB            7
    3       WR1           24
    3       WR2           24
    3        OL           24
    3       WR3           24
    3       WR4           24
    3        RB           24
    3        QB           24
    4       WR1           -2
    4       TE            -2
    4       OL            -2
    4       TE            -2
    4       WR4           -2
    4       RB            -2
    4       QB            -2",
    header = TRUE, stringsAsFactors = FALSE)
    

    【讨论】:

    • 你不是说split(df, df$Play)
    • 谢谢你们!我终于能够使用您的建议使其正常工作。我想也许我必须以某种方式使用 split ,但不能完全正确。感谢您花时间帮助新手!
    猜你喜欢
    • 1970-01-01
    • 2017-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多