Как посчитать разные значения столбца данных и отсортировать их в новый? Разделяется каждые несколько строк указанного кадра данных - PullRequest
0 голосов
/ 07 июля 2019

У меня есть блок данных бросков, и я хотел бы подсчитать каждое количество шаров и ударов каждого внешнего вида пластины.Кадр данных содержит шаги по каждой игре и по внешнему виду пластин в каждой игре, а также по количеству полей в каждом внешнем виде пластин, но не разделены на отдельные виды пластин.Я хотел бы создать новый фрейм данных, в котором будет отображаться каждый внешний вид пластины с количеством брошенных шаров и ударов.

Я пробовал несколько циклов, но не смог разделить данные и сохранить их в новом фрейме данных.,Я был в состоянии только напечатать результаты каждого появления пластины.Я разделил каждую игру на фреймы данных для каждой игры, но предположил, что есть способ сделать это без создания подмножеств для каждой игры.

Team.pitchlog - это фрейм данных со столбцами идентификатора игры, указывающими, из какой игры происходит поле, иAB #, который указывает номер внешнего вида пластины (да, AB вместо PA была ошибкой, но поскольку все кадры данных используют это, я еще не изменил заголовки столбцов), и каждая строка имеет свою собственную высоту тона, в которой столбец Result указывает, была ли высота тонамяч или удар.

Team.gm1 = подмножество (Team.pitchlog, Team.pitchlog $ Game ID == 1)

для (я в 1:39) {print (count(Team.gm1 $ Result [Team.gm1 $ AB # == i]))}

Я ожидаю, что фрейм данных, в котором каждая строка будет отображаться как табличка, а также столбцы с идентификатором игры, идентификатором появления таблички и столбцамидля мячей и ударов.

1 Ответ

0 голосов
/ 07 июля 2019

Вот вариант с tidyverse.filter строк, где 'Game ID' равен 1, затем разбейте набор данных на list набора данных на основе значения 'AB #' и получите частоту 'Result', зацикливая list с помощью map

library(tidyverse)
Team.pitchlog %>%
       filter(`Game ID` == 1) %>%
       select(`AB #`, Result) %>%
       mutate(Result = factor(Result)) %>%
       group_split(`AB #`) %>%
       map(~ .x %>%
                count(Result, .drop = FALSE))

В сообщении ОП count (из dplyr) применяется к vector в качестве входных данных, в то время как страница справки ?count задает входные данные 'x 'as

x - табличный код () для подсчета / подсчета.

Если мы хотим использовать тот же синтаксис, опция table из base R который может принимать вектор

for (i in 1:39) print (table(Team.gm1$Result[Team.gm1$`AB #`==i])) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...