Удалить часть строки в столбце (R) - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть датафрейм dataf со столбцом PlayerValue

         PlayerName           playerValue
1     Michy Batshuayi        40,00 Mill. €  
2     Tiemoué Bakayoko       35,00 Mill. €  
3     Kurt Zouma             20,00 Mill. €  
4     Kenedy                 10,00 Mill. €  
5     Tammy Abraham          10,00 Mill. €  
6     Abdul Rahman Baba      8,00 Mill. €  
7     Mario Pasalic          8,00 Mill. €  
8     Lewis Baker            5,50 Mill. €  
9     Ola Aina               4,00 Mill. €  
10    Tomas Kalas            4,00 Mill. €  

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

         PlayerName           playerValue
1     Michy Batshuayi           40,00 # 40.00, if possible
2     Tiemoué Bakayoko          35,00  
3     Kurt Zouma                20,00  
4     Kenedy                    10,00  
5     Tammy Abraham             10,00   
6     Abdul Rahman Baba         8,00   
7     Mario Pasalic             8,00  
8     Lewis Baker               5,50  
9     Ola Aina                  4,00   
10    Tomas Kalas               4,00   

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Это сделает трюк

playerValue <- "40,00 Mill. € "
as.numeric(gsub("^(\\d+?)\\,(\\d+?)\\s.*", "\\1.\\2", playerValue, perl = TRUE))
# returns
40

Short expl.regex:

  • ^ говорит о том, что это начало строки
  • \\d+\\,\\d+ означает, что есть две последовательности чисел, разделенные запятой.Мы извлекаем две последовательности, используя круглые скобки
  • \\s.* означает, что после второй последовательности появляется пробел и после пробела появляется что-нибудь (ничто не является ничем)
  • \\1, \\2те группы, которые мы хотим извлечь, и мы разделяем их точкой, чтобы преобразовать их в numeric
0 голосов
/ 11 декабря 2018

Используйте gsub, чтобы заменить что-либо после пробела, а также замените , на ., например:

data$playerValue <- gsub(",", ".", gsub("[[:space:]].*", "", data$playerValue))

Это даст вам такой вывод:

#         PlayerName           playerValue
#1     Michy Batshuayi               40.00
#2     Tiemoué Bakayoko              35.00  
#3     Kurt Zouma                    20.00  
#4     Kenedy                        10.00  
#5     Tammy Abraham                 10.00   
#6     Abdul Rahman Baba              8.00   
#7     Mario Pasalic                  8.00  
#8     Lewis Baker                    5.50  
#9     Ola Aina                       4.00   
#10    Tomas Kalas                    4.00   

Это, если вы хотите преобразовать его в число, вы можете сделать это следующим образом:

data$playerValue <- as.numeric(data$playerValue)

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...