我有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
答案 0 :(得分:1)
使用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)
希望有帮助。
答案 1 :(得分:1)
这可以解决问题
playerValue <- "40,00 Mill. € "
as.numeric(gsub("^(\\d+?)\\,(\\d+?)\\s.*", "\\1.\\2", playerValue, perl = TRUE))
# returns
40
简短爆炸。 regex
:
^
告诉它是字符串的开头\\d+\\,\\d+
表示有两个数字序列,中间用逗号分隔。我们使用括号提取两个序列\\s.*
表示在第二个序列后出现空白并且该空间后出现了任何东西(什么也没有)\\1
,\\2
是我们要提取的分组,为了将其转换为numeric