Как удалить ненужные строки из фрейма данных? - PullRequest
1 голос
/ 10 октября 2019

Если вы посмотрите на baseball-reference.com и нажмете на команды и команды, вы увидите, что у них есть опции для преобразования таблиц в CSV, но как их получить, если URL не работает с read.csv()

Я пытаюсь импортировать данные ватина с пакетом rvest от определенных команд с baseball-reference.com. Я только хочу включить полевых игроков и опустить кувшины, повторяющиеся имена столбцов и итоги команды, которые веб-сайт сгенерировал из данных. Если бы я мог просто использовать CSV, у меня не было бы этой проблемы, но html_table() только захватывает исходную таблицу с веб-сайта, а удаление столбцов со значениями только портит данные.

library(rvest)
#Goals
#Remove unwanted rows
#Remove pitcher batting stats

#San Fransisco Giants
giantsBatting <- read_html('https://www.baseball- 
reference.com/teams/SFG/2019-batting.shtml#team_batting::none')
giantsCSV <- giantsBatting%>%
  html_nodes('table')%>%
  html_table()
giantsDF<-as.data.frame(giantsCSV)
giantsDF<-giantsDF[!(giantsDF$Pos=='P'& giantsDF$Pos=='Pos'),]
print(giantsDF)

Я хочу, чтобы выходные данные имели один набор имен столбцов (таблица имеет три набора в строке 9-10 и более поздних для кувшинов) и удалили кувшины и общую статистику команды.

Фактический вывод не пропускает все питчеры и не удаляет дополнительные заголовки имен столбцов.

1 Ответ

0 голосов
/ 10 октября 2019

Проблема в том, что логика ищет и «P», и «Pos» в одной строке, используя &. Он дает вывод всех FALSE, отрицая (!), он преобразуется во все TRUE и, следовательно, возвращается полный набор данных.

Вместо этого для вектора значений с length больше 1, используйте %in% и затем отрицайте (!)

giantsDF1 <- giantsDF[!giantsDF$Pos %in% c("P", "Pos") ,] 
nrow(giantsDF1)
#[1] 36

nrow(giantsDF)   
#[1] 71
...