如何在特定字符后删除 R 中字符串的 n 个字符?
How to remove n number of characters of a string in R after a specific character?
我的数据框是:
df <- data.frame(player = c("Taiwo Awoniyi/e5478b87", "Jacob Bruun Larsen/4e204552", "Andi Zeqiri/d01231f0"), goals = c(2,5,7))
我想删除“玩家”列中“/”后的所有数字。理想情况下:
df <- data.frame(player = c("Taiwo Awoniyi", "Jacob Bruun Larsen", "Andi Zeqiri"), goals = c(2,5,7))
我不确定如何处理这个问题,因为玩家名字的长度差异很大,而且有些数字比其他数字大。
使用 dplyr
作为管道和 mutate
,我们可以 gsub
/
.
之后的所有内容
df %>%
mutate(player = gsub("\/.*", "", player))
player goals
1 Taiwo Awoniyi 2
2 Jacob Bruun Larsen 5
3 Andi Zeqiri 7
我们可以使用 separate
,添加 extra = 'drop'
(非常感谢 Onyambu)
library(dplyr)
library(tidyr)
df %>%
separate(player, "player", sep="/", extra = 'drop')
player goals
1 Taiwo Awoniyi 2
2 Jacob Bruun Larsen 5
3 Andi Zeqiri 7
您可以通过负字符 class 反向引用要保留的子字符串,允许除 /
:
之外的任何字符
df %>%
mutate(player = sub("([^/]+).*", "\1", player))
player goals
1 Taiwo Awoniyi 2
2 Jacob Bruun Larsen 5
3 Andi Zeqiri 7
更简单地说,您可以删除任何 /
或数字:
df %>%
mutate(player = gsub("[/0-9]", "", player))
在base R
语法中:
df$player <- gsub("[/0-9]", "", df$player)
使用基础 R.
transform(df, player=gsub('/.+', '', player))
# player goals
# 1 Taiwo Awoniyi 2
# 2 Jacob Bruun Larsen 5
# 3 Andi Zeqiri 7
我的数据框是:
df <- data.frame(player = c("Taiwo Awoniyi/e5478b87", "Jacob Bruun Larsen/4e204552", "Andi Zeqiri/d01231f0"), goals = c(2,5,7))
我想删除“玩家”列中“/”后的所有数字。理想情况下:
df <- data.frame(player = c("Taiwo Awoniyi", "Jacob Bruun Larsen", "Andi Zeqiri"), goals = c(2,5,7))
我不确定如何处理这个问题,因为玩家名字的长度差异很大,而且有些数字比其他数字大。
使用 dplyr
作为管道和 mutate
,我们可以 gsub
/
.
df %>%
mutate(player = gsub("\/.*", "", player))
player goals
1 Taiwo Awoniyi 2
2 Jacob Bruun Larsen 5
3 Andi Zeqiri 7
我们可以使用 separate
,添加 extra = 'drop'
(非常感谢 Onyambu)
library(dplyr)
library(tidyr)
df %>%
separate(player, "player", sep="/", extra = 'drop')
player goals
1 Taiwo Awoniyi 2
2 Jacob Bruun Larsen 5
3 Andi Zeqiri 7
您可以通过负字符 class 反向引用要保留的子字符串,允许除 /
:
df %>%
mutate(player = sub("([^/]+).*", "\1", player))
player goals
1 Taiwo Awoniyi 2
2 Jacob Bruun Larsen 5
3 Andi Zeqiri 7
更简单地说,您可以删除任何 /
或数字:
df %>%
mutate(player = gsub("[/0-9]", "", player))
在base R
语法中:
df$player <- gsub("[/0-9]", "", df$player)
使用基础 R.
transform(df, player=gsub('/.+', '', player))
# player goals
# 1 Taiwo Awoniyi 2
# 2 Jacob Bruun Larsen 5
# 3 Andi Zeqiri 7