汇总R中列中包含字符串的所有数据

时间:2015-10-05 18:12:18

标签: r

我想在@testj$pre_season中的OPP列中总结包含test$regular_season的所有数据,

例如,我可以根据该数据计算REB列的平均值。

这是我唯一尝试过的事情:

> selectedrows <- grep('@', testj$pre_season$OPP)
> test$pre_season$OPP[selectedrows]
# [1] @ DET @ BKN vsORL vsNY 
# Levels: @ BKN @ BOS @ DET @ MIN vsBOS vsCHA vsNY vsORL

> head(testj)
# $name
# [1] "Eric Bledsoe"`

#  $pre_season
#   DATE      OPP     SCORE MIN FGM-FGA   FG% 3PM-3PA   3P% FTM-FTA   FT% REB AST BLK STL PF TO PTS
# 1 Fri 10/24   @ UTAH W 105-100  30       8 0.500       1 0.000      10   0.600   5   5   0   3  2  1  14
# 2 Wed 10/22    @ LAC L 105-108  34      12 0.500       4 0.750      14 0.857   1   2   0   2  2  3  27
# 3 Tue 10/21    @ LAL W 114-108  22       8 0.500       1 1.000       2 1.000   7   6   3   1  0  2  11
# 4 Thu 10/16     vsSA  W 121-90  26      10 0.700       3 0.667       1 0.000   0   6   2   2  4  4  16
# 5 Mon 10/13    @ HOU   L 92-95  20       8 0.625       1 0.000       5 0.600   2   2   0   0  2  3  13
# 6 Fri 10/10    vsDEN   W 97-89  17       6 0.333       3 0.333       6 0.667   2   4   0   1  2  0   9
# 7  Wed 10/8 vs FLMG  W 100-88  22      10 0.700       2 0.000       2 0.500   4   2   0   1  3  2  15

# $regular_season
#        DATE    OPP     SCORE MIN FGM-FGA   FG% 3PM-3PA   3P% FTM-FTA   FT% REB AST BLK STL PF TO PTS
# 1   Tue 4/14  vsLAC L 101-112  33      14 0.286       5 0.000       4 0.500   6   9   0   1  0  2  10
# 2   Sun 4/12   @ SA  L 91-107  41      13 0.538       3 0.000       6 1.000   4  10   0   0  1  1  20
# 3   Fri 4/10   @ NO   L 75-90  39      19 0.368       6 0.333       4 0.750   2   7   1   1  1  4  19`
testj

类是一个列表,而testj$pre_seasontestj$regular_season的类是data.frame s

数据:

> dput(testj)
structure(list(name = "Eric Bledsoe", pre_season = structure(list(
    DATE = structure(c(2L, 6L, 5L, 4L, 3L, 1L, 7L), .Label = c("Fri 10/10", 
    "Fri 10/24", "Mon 10/13", "Thu 10/16", "Tue 10/21", "Wed 10/22", 
    "Wed 10/8"), class = "factor"), OPP = structure(c(4L, 2L, 
    3L, 7L, 1L, 6L, 5L), .Label = c("@ HOU", "@ LAC", "@ LAL", 
    "@ UTAH", "vs FLMG", "vsDEN", "vsSA"), class = "factor"), 
    SCORE = structure(c(4L, 1L, 5L, 6L, 2L, 7L, 3L), .Label = c("L 105-108", 
    "L 92-95", "W 100-88", "W 105-100", "W 114-108", "W 121-90", 
    "W 97-89"), class = "factor"), MIN = c(30, 34, 22, 26, 20, 
    17, 22), `FGM-FGA` = c(8, 12, 8, 10, 8, 6, 10), `FG%` = c(0.5, 
    0.5, 0.5, 0.7, 0.625, 0.333, 0.7), `3PM-3PA` = c(1, 4, 1, 
    3, 1, 3, 2), `3P%` = c(0, 0.75, 1, 0.667, 0, 0.333, 0), `FTM-FTA` = c(10, 
    14, 2, 1, 5, 6, 2), `FT%` = c(0.6, 0.857, 1, 0, 0.6, 0.667, 
    0.5), REB = c(5, 1, 7, 0, 2, 2, 4), AST = c(5, 2, 6, 6, 2, 
    4, 2), BLK = c(0, 0, 3, 2, 0, 0, 0), STL = c(3, 2, 1, 2, 
    0, 1, 1), PF = c(2, 2, 0, 4, 2, 2, 3), TO = c(1, 3, 2, 4, 
    3, 0, 2), PTS = c(14, 27, 11, 16, 13, 9, 15)), .Names = c("DATE", 
"OPP", "SCORE", "MIN", "FGM-FGA", "FG%", "3PM-3PA", "3P%", "FTM-FTA", 
"FT%", "REB", "AST", "BLK", "STL", "PF", "TO", "PTS"), row.names = c(NA, 
-7L), class = "data.frame"), regular_season = structure(list(
    DATE = structure(c(66L, 53L, 19L, 82L, 67L, 40L, 57L, 28L, 
    52L, 17L, 80L, 51L, 38L, 56L, 50L, 16L, 79L, 29L, 39L, 18L, 
    81L, 27L, 37L, 54L, 78L, 26L, 36L, 14L, 65L, 49L, 15L, 55L, 
    25L, 30L, 4L, 69L, 42L, 3L, 68L, 20L, 1L, 58L, 41L, 5L, 70L, 
    59L, 43L, 2L, 77L, 63L, 48L, 12L, 62L, 47L, 34L, 76L, 23L, 
    46L, 11L, 64L, 24L, 35L, 13L, 61L, 44L, 9L, 74L, 22L, 33L, 
    8L, 73L, 21L, 32L, 7L, 72L, 45L, 10L, 75L, 60L, 31L, 6L, 
    71L), .Label = c("Fri 1/16", "Fri 1/2", "Fri 1/23", "Fri 1/30", 
    "Fri 1/9", "Fri 10/31", "Fri 11/14", "Fri 11/21", "Fri 11/28", 
    "Fri 11/7", "Fri 12/12", "Fri 12/26", "Fri 12/5", "Fri 2/20", 
    "Fri 2/6", "Fri 3/13", "Fri 3/27", "Fri 3/6", "Fri 4/10", 
    "Mon 1/19", "Mon 11/17", "Mon 11/24", "Mon 12/15", "Mon 12/8", 
    "Mon 2/2", "Mon 2/23", "Mon 3/2", "Mon 3/30", "Mon 3/9", 
    "Sat 1/31", "Sat 11/1", "Sat 11/15", "Sat 11/22", "Sat 12/20", 
    "Sat 12/6", "Sat 2/21", "Sat 2/28", "Sat 3/21", "Sat 3/7", 
    "Sat 4/4", "Sun 1/11", "Sun 1/25", "Sun 1/4", "Sun 11/30", 
    "Sun 11/9", "Sun 12/14", "Sun 12/21", "Sun 12/28", "Sun 2/8", 
    "Sun 3/15", "Sun 3/22", "Sun 3/29", "Sun 4/12", "Thu 2/26", 
    "Thu 2/5", "Thu 3/19", "Thu 4/2", "Tue 1/13", "Tue 1/6", 
    "Tue 11/4", "Tue 12/2", "Tue 12/23", "Tue 12/30", "Tue 12/9", 
    "Tue 2/10", "Tue 4/14", "Tue 4/7", "Wed 1/21", "Wed 1/28", 
    "Wed 1/7", "Wed 10/29", "Wed 11/12", "Wed 11/19", "Wed 11/26", 
    "Wed 11/5", "Wed 12/17", "Wed 12/31", "Wed 2/25", "Wed 3/11", 
    "Wed 3/25", "Wed 3/4", "Wed 4/8"), class = "factor"), OPP = structure(c(42L, 
    25L, 19L, 7L, 1L, 57L, 10L, 24L, 50L, 53L, 55L, 36L, 11L, 
    48L, 49L, 30L, 47L, 39L, 6L, 2L, 22L, 16L, 54L, 50L, 8L, 
    32L, 5L, 18L, 40L, 26L, 57L, 24L, 44L, 10L, 34L, 58L, 42L, 
    40L, 53L, 43L, 47L, 35L, 15L, 25L, 18L, 17L, 56L, 52L, 21L, 
    19L, 14L, 26L, 36L, 29L, 20L, 4L, 46L, 21L, 38L, 45L, 13L, 
    11L, 7L, 41L, 51L, 8L, 37L, 27L, 12L, 23L, 9L, 3L, 13L, 33L, 
    31L, 39L, 55L, 44L, 14L, 28L, 54L, 43L), .Label = c("@ ATL", 
    "@ BKN", "@ BOS", "@ CHA", "@ CHI", "@ CLE", "@ DAL", "@ DEN", 
    "@ DET", "@ GS", "@ HOU", "@ IND", "@ LAC", "@ LAL", "@ MEM", 
    "@ MIA", "@ MIL", "@ MIN", "@ NO", "@ NY", "@ OKC", "@ ORL", 
    "@ PHI", "@ POR", "@ SA", "@ SAC", "@ TOR", "@ UTAH", "@ WSH", 
    "vsATL", "vsBKN", "vsBOS", "vsCHA", "vsCHI", "vsCLE", "vsDAL", 
    "vsDEN", "vsDET", "vsGS", "vsHOU", "vsIND", "vsLAC", "vsLAL", 
    "vsMEM", "vsMIA", "vsMIL", "vsMIN", "vsNO", "vsNY", "vsOKC", 
    "vsORL", "vsPHI", "vsPOR", "vsSA", "vsSAC", "vsTOR", "vsUTAH", 
    "vsWSH"), class = "factor"), SCORE = structure(c(4L, 33L, 
    21L, 6L, 19L, 76L, 7L, 26L, 39L, 24L, 42L, 79L, 65L, 75L, 
    44L, 29L, 49L, 23L, 22L, 53L, 47L, 41L, 20L, 66L, 54L, 12L, 
    9L, 11L, 16L, 25L, 43L, 28L, 3L, 27L, 81L, 50L, 2L, 14L, 
    68L, 61L, 55L, 51L, 13L, 36L, 60L, 45L, 74L, 59L, 18L, 8L, 
    63L, 62L, 73L, 46L, 80L, 56L, 35L, 30L, 5L, 38L, 17L, 36L, 
    67L, 64L, 31L, 40L, 71L, 1L, 48L, 72L, 77L, 69L, 10L, 37L, 
    57L, 52L, 15L, 32L, 58L, 34L, 78L, 70L), .Label = c("L 100-104", 
    "L 100-120", "L 101-102", "L 101-112", "L 103-105", "L 104-107", 
    "L 106-107", "L 106-110", "L 107-112", "L 107-120", "L 109-111", 
    "L 110-115", "L 110-122", "L 111-113", "L 112-114", "L 118-127", 
    "L 120-121", "L 134-137", "L 69-96", "L 74-101", "L 75-90", 
    "L 79-89", "L 80-98", "L 81-87", "L 83-85", "L 86-109", "L 87-106", 
    "L 87-108", "L 87-96", "L 88-112", "L 90-93", "L 91-102", 
    "L 91-107", "L 91-118", "L 94-96", "L 95-100", "L 95-103", 
    "L 97-103", "L 97-109", "L 97-122", "L 98-115", "L 99-108", 
    "W 100-93", "W 102-89", "W 102-96", "W 104-92", "W 105-100", 
    "W 106-83", "W 106-97", "W 106-98", "W 107-100", "W 107-95", 
    "W 108-100", "W 110-96", "W 110-99", "W 111-106", "W 112-104", 
    "W 112-106", "W 112-96", "W 113-111", "W 115-100", "W 115-106", 
    "W 116-107", "W 116-99", "W 117-102", "W 117-113", "W 118-106", 
    "W 118-113", "W 118-114", "W 119-99", "W 120-112", "W 122-96", 
    "W 124-115", "W 125-109", "W 74-72", "W 87-85", "W 88-86", 
    "W 94-89", "W 98-92", "W 99-90", "W 99-93"), class = "factor"), 
    MIN = c(33, 41, 39, 33, 26, 36, 40, 26, 39, 38, 35, 37, 37, 
    37, 37, 35, 34, 36, 39, 37, 38, 34, 32, 42, 36, 39, 32, 36, 
    40, 0, 31, 35, 38, 32, 37, 37, 32, 39, 34, 31, 28, 38, 42, 
    39, 33, 38, 30, 31, 42, 37, 32, 34, 35, 29, 36, 39, 36, 22, 
    31, 36, 45, 36, 40, 39, 35, 27, 38, 37, 25, 22, 36, 30, 34, 
    38, 23, 22, 43, 36, 21, 29, 39, 26), `FGM-FGA` = c(14, 13, 
    19, 7, 9, 13, 17, 11, 12, 20, 15, 15, 18, 15, 15, 12, 14, 
    11, 12, 10, 7, 10, 9, 16, 15, 18, 8, 11, 19, 0, 12, 10, 16, 
    11, 16, 9, 11, 14, 22, 11, 12, 8, 16, 11, 17, 10, 12, 14, 
    19, 13, 19, 11, 19, 15, 15, 15, 9, 12, 9, 11, 16, 17, 13, 
    20, 14, 14, 10, 16, 10, 8, 11, 11, 6, 17, 5, 6, 19, 12, 4, 
    11, 15, 7), `FG%` = c(0.286, 0.538, 0.368, 0.714, 0.444, 
    0.385, 0.353, 0.455, 0.417, 0.25, 0.467, 0.4, 0.611, 0.133, 
    0.533, 0.583, 0.5, 0.545, 0.25, 0.5, 0.429, 0.6, 0.333, 0.688, 
    0.467, 0.444, 0.625, 0.364, 0.474, 0, 0.5, 0.5, 0.563, 0.455, 
    0.5, 0.333, 0.545, 0.571, 0.5, 0.455, 0.333, 0.375, 0.313, 
    0.636, 0.412, 0.3, 0.583, 0.429, 0.526, 0.462, 0.368, 0.636, 
    0.316, 0.4, 0.533, 0.333, 0.444, 0.333, 0.667, 0.182, 0.5, 
    0.412, 0.462, 0.55, 0.357, 0.286, 0.6, 0.5, 0.2, 0.625, 0.545, 
    0.455, 0, 0.471, 0.8, 0.333, 0.474, 0.75, 0.5, 0.273, 0.2, 
    0.714), `3PM-3PA` = c(5, 3, 6, 3, 2, 1, 5, 0, 5, 4, 6, 6, 
    3, 4, 3, 4, 5, 3, 3, 2, 1, 3, 2, 3, 3, 5, 3, 2, 4, 0, 3, 
    2, 3, 2, 3, 4, 4, 4, 6, 3, 4, 3, 5, 3, 2, 4, 2, 5, 4, 3, 
    3, 3, 7, 3, 3, 4, 2, 2, 3, 6, 6, 6, 2, 4, 3, 2, 3, 6, 3, 
    2, 2, 0, 2, 7, 1, 1, 5, 2, 0, 5, 2, 4), `3P%` = c(0, 0, 0.333, 
    0.333, 0, 0, 0.4, 0, 0.2, 0, 0.333, 0.167, 0.667, 0, 0.333, 
    0.75, 0.4, 0.667, 0.333, 0.5, 1, 0.333, 0, 0.667, 0.333, 
    0.4, 0.333, 0, 0.5, 0, 1, 0.5, 0.333, 0.5, 0.667, 0.25, 0.25, 
    0.25, 0.167, 0.667, 0.25, 0.333, 0.2, 1, 0, 0, 0.5, 0.6, 
    0.5, 0, 0.333, 0.333, 0.143, 0, 0.333, 0.25, 0, 0, 0.667, 
    0, 0.333, 0.167, 1, 0.25, 0.333, 0, 0.667, 0.5, 0, 0.5, 0, 
    0, 0, 0.429, 1, 0, 0.2, 1, 0, 0, 0.5, 0.75), `FTM-FTA` = c(4, 
    6, 4, 4, 2, 7, 5, 3, 5, 3, 5, 10, 11, 2, 6, 6, 2, 6, 0, 11, 
    6, 11, 7, 8, 3, 4, 2, 6, 13, 0, 0, 7, 4, 6, 5, 1, 6, 10, 
    15, 7, 7, 6, 0, 4, 4, 6, 7, 2, 7, 12, 7, 5, 3, 6, 9, 4, 4, 
    5, 2, 0, 9, 10, 5, 5, 2, 8, 8, 8, 5, 4, 9, 6, 1, 3, 2, 6, 
    7, 4, 3, 5, 5, 3), `FT%` = c(0.5, 1, 0.75, 0.75, 0.5, 0.857, 
    0.8, 0.667, 0.8, 1, 0.6, 0.7, 0.909, 0.5, 0.667, 0.667, 1, 
    0.833, 0, 0.727, 1, 0.636, 0.857, 0.5, 1, 0.75, 1, 0.667, 
    0.923, 0, 0, 0.857, 0.5, 0.833, 1, 1, 0.667, 0.8, 0.667, 
    0.714, 1, 0.833, 0, 0.5, 0.75, 0.667, 0.714, 1, 1, 0.75, 
    1, 0.6, 1, 0.833, 0.889, 1, 0.75, 0.8, 1, 0, 1, 0.8, 1, 0.8, 
    1, 1, 0.875, 0.75, 1, 0.5, 0.667, 0.833, 1, 1, 1, 0.833, 
    0.571, 0.75, 0.667, 0.8, 1, 1), REB = c(6, 4, 2, 1, 2, 3, 
    6, 3, 1, 3, 5, 6, 8, 11, 9, 3, 2, 2, 4, 10, 7, 4, 6, 13, 
    6, 7, 7, 7, 4, 0, 2, 7, 7, 3, 4, 5, 1, 8, 10, 5, 4, 7, 3, 
    5, 7, 6, 2, 5, 2, 8, 8, 5, 10, 9, 10, 2, 6, 1, 5, 5, 11, 
    4, 3, 3, 3, 3, 1, 7, 9, 5, 6, 4, 6, 11, 4, 0, 5, 5, 0, 4, 
    9, 6), AST = c(9, 10, 7, 3, 5, 5, 11, 5, 7, 7, 1, 9, 4, 2, 
    11, 6, 9, 3, 9, 6, 9, 3, 0, 9, 6, 10, 8, 6, 4, 0, 6, 4, 8, 
    3, 6, 6, 7, 9, 6, 7, 2, 6, 5, 9, 1, 10, 8, 8, 8, 3, 8, 6, 
    11, 3, 3, 2, 4, 4, 2, 8, 16, 3, 7, 7, 6, 4, 10, 6, 5, 7, 
    4, 7, 10, 5, 3, 3, 8, 4, 1, 8, 3, 9), BLK = c(0, 0, 1, 0, 
    0, 0, 1, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 
    4, 1, 1, 1, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 1, 0, 0, 0, 1, 
    1, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 2, 
    3, 2, 0, 0, 1, 0, 2, 0, 0, 1, 0, 0, 1, 0, 0, 2, 0, 1, 1, 
    1, 0), STL = c(1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 3, 3, 4, 
    2, 1, 1, 2, 1, 2, 3, 1, 0, 1, 2, 2, 3, 0, 2, 0, 4, 0, 4, 
    1, 3, 2, 2, 0, 3, 3, 1, 1, 2, 0, 5, 2, 3, 1, 1, 2, 4, 0, 
    3, 1, 3, 0, 3, 1, 1, 1, 2, 3, 0, 4, 1, 0, 3, 2, 0, 1, 2, 
    3, 3, 1, 1, 0, 2, 0, 0, 2, 1, 0), PF = c(0, 1, 1, 3, 1, 2, 
    3, 2, 3, 1, 1, 5, 2, 2, 2, 3, 1, 3, 2, 3, 3, 3, 1, 5, 2, 
    3, 2, 4, 1, 0, 2, 2, 4, 2, 1, 2, 4, 5, 1, 3, 2, 1, 0, 3, 
    1, 2, 2, 1, 6, 1, 1, 2, 2, 3, 0, 0, 3, 3, 2, 2, 4, 4, 3, 
    0, 5, 2, 3, 4, 2, 3, 3, 1, 4, 1, 2, 4, 5, 0, 3, 4, 2, 2), 
    TO = c(2, 1, 4, 2, 5, 1, 2, 5, 6, 0, 3, 7, 3, 3, 3, 7, 5, 
    6, 3, 7, 7, 1, 2, 5, 6, 6, 5, 4, 3, 0, 0, 6, 3, 4, 4, 3, 
    4, 3, 3, 3, 2, 1, 1, 4, 3, 7, 1, 0, 3, 2, 3, 2, 3, 2, 3, 
    3, 5, 1, 2, 7, 5, 1, 3, 2, 6, 3, 3, 3, 6, 2, 3, 3, 3, 1, 
    7, 2, 5, 9, 1, 1, 2, 1), PTS = c(10, 20, 19, 14, 9, 16, 18, 
    12, 15, 13, 19, 20, 34, 5, 21, 21, 18, 19, 7, 19, 13, 20, 
    12, 28, 18, 21, 13, 12, 32, 0, 15, 17, 21, 16, 23, 8, 17, 
    25, 33, 17, 16, 12, 11, 19, 17, 10, 20, 17, 29, 21, 22, 18, 
    16, 17, 25, 15, 11, 12, 16, 4, 27, 23, 19, 27, 13, 16, 21, 
    25, 9, 13, 18, 15, 1, 22, 11, 9, 23, 23, 6, 10, 12, 16)), .Names = c("DATE", 
"OPP", "SCORE", "MIN", "FGM-FGA", "FG%", "3PM-3PA", "3P%", "FTM-FTA", 
"FT%", "REB", "AST", "BLK", "STL", "PF", "TO", "PTS"), row.names = c(NA, 
-82L), class = "data.frame"), post_season = NULL), .Names = c("name", 
"pre_season", "regular_season", "post_season")) 

1 个答案:

答案 0 :(得分:1)

尝试

 sapply(testj[paste0(c('pre', 'regular'), '_season')],
               function(x) mean(x$REB[grep('@', x$OPP)]))