Управление столбцом в кадре данных - PullRequest
0 голосов
/ 29 апреля 2018

У меня есть фрейм данных, который называется черновик, который я скопировал из Википедии. Я пытаюсь использовать количество символов в данном столбце строки (называемом игроком), чтобы разделить на 2, чтобы удалить половину длины столбца строки в поле столбца строки. Другими словами, если значение row1 в столбце Player в настоящий момент находится в кадре данных со значением (просто пример) «Mayfield, BakerBaker Mayfield», я бы хотел уменьшить его до простого «Mayfield, Baker». Использование функции длины в самом столбце, похоже, не помогает, поскольку длина составляет 256 символов. Вот как я очистил файл:

Команда 1 (вызов пакета)

library("rvest")

Команда 2 (определить веб-страницу)

url <- 'https://en.wikipedia.org/wiki/2018_NFL_Draft'

Команда 3 (Очистить)

draft <- url %>%
  read_html() %>%
  html_nodes(xpath='//*[@id="mw-content-text"]/div/table[4]') %>%
  html_table()

  draft <- draft[[1]]

Это работает в Excel = ВЛЕВО (E2, (LEN (E2) +1) / 2)

Заранее большое спасибо!

Ответы [ 2 ]

0 голосов
/ 29 апреля 2018

EDIT: Я удалил свой предыдущий ответ, используя очень неэффективный цикл for, и изменил его на использование sapply вместо того, чтобы изменить содержимое рассматриваемого столбца:

draft[4] <- sapply(4, function(x,y) substr(y[,x], 1, nchar(y[,x])/2+0.5), y=draft)

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

0 голосов
/ 29 апреля 2018

Это должно работать для вас

# I modified this to remove the first blank column, it causes errors otherwise
draft <- draft[[1]][-1]

# extract the string which follows the pattern from the original Player variable
draft %>%
  mutate(
    Player1 = substr(Player, 1, nchar(Player) / 2 + 1)
  )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...