【问题标题】:group_by doesn't work properly on retrosheet data [duplicate]group_by 在追溯表数据上无法正常工作[重复]
【发布时间】:2021-08-10 11:32:31
【问题描述】:

我是 R 新手,正在处理来自 Retrosheet 的棒球数据。 我正在尝试从我的目录下载多个文件。例如,这个ll对象包含两个TXT文件名称“GL2001.TXT”和“GL2002.TXT”。这是脚本。这适用于我的控制台。

    ll = list.files(pattern = "*.TXT")
ll

    mycols <- read_csv("game_log_header.csv") %>%
      names()


ll_data <- lapply(ll, read_delim,
                col_names = mycols,
                delim = ",",
                na = character())

ll_data_frame <- ldply (ll_data, data.frame)

但是 group_by 函数根本不适用于这个数据框。每当我更改 group_by 参数时,R 都会返回相同的结果。

ll_data_frame %>%
  group_by(DayOfWeek) %>%
  summarize(R = sum(HomeRunsScore))

ll_data_frame %>%
  group_by(VisitingTeam) %>%
  summarize(R = sum(HomeRunsScore))

这两行返回相同的结果。

      R
1 23047

这段代码怎么不能工作? 您有什么方法可以使用此代码或其他想法来修复它吗? 提前谢谢你。

这是我数据的一小部分。

ll_data_frame %>%
  select(Date, DayOfWeek, HomeTeam, VisitingTeam, 
         HomeRunsScore, VisitorRunsScored, HomeManagerName)


        Date DayOfWeek HomeTeam VisitingTeam HomeRunsScore VisitorRunsScored
1   20010401       Sun      TOR          TEX             8                 1
2   20010402       Mon      BAL          BOS             2                 1
3   20010402       Mon      CLE          CHA             4                 7
4   20010402       Mon      NYA          KCA             7                 3
5   20010402       Mon      SEA          OAK             5                 4
6   20010402       Mon      CHN          MON             4                 5
7   20010402       Mon      CIN          ATL             4                10
8   20010402       Mon      COL          SLN             8                 0
9   20010402       Mon      FLO          PHI             5                 6
10  20010402       Mon      LAN          MIL             1                 0
11  20010402       Mon      SFN          SDN             3                 2

【问题讨论】:

  • 您能否提供一小部分数据以供我们检查您的代码? stackoverflow.com/help/minimal-reproducible-example
  • @deschen 我更新了我的问题。有用吗?
  • 并非如此。你能在这里发布dput(ll_data_frame) 的结果吗,或者如果数据集太大,做一个子集,例如dput(head(ll_data_frame))
  • @deschen 我想通了。谢谢
  • @RonakShah 谢谢

标签: r lapply


【解决方案1】:

这是因为您同时使用dplyrplyr 包。
summarize 函数被 dplyr 屏蔽 plyr 包。
试试这个:

ll_data_frame %>%
  group_by(DayOfWeek) %>%
  dplyr::summarize(R = sum(HomeRunsScore))

ll_data_frame %>%
  group_by(VisitingTeam) %>%
  dplyr::summarize(R = sum(HomeRunsScore))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-03
    • 2017-02-22
    • 2018-05-25
    相关资源
    最近更新 更多