使用gsub删除R中第一个空格之前的所有字符串



我有一个这样的数据帧:

name         weight
r apple         0.5
y pear          0.4
y cherry        0.1
g watermelon    5.0
pp grape        0.5
y apple pear    0.4
...  ...

我想删除名称列中第一个空格之前的所有字符。有人能帮我个忙吗?谢谢你!

试试这个:

sub(".*? ", "", D$name)
编辑:

模式在第一个空格之前查找任何字符0次或多次(.*),然后捕获第一个空格之后的一个或多个字符((.+))。.*之后的?使它"懒惰"而不是"贪婪",并且是使它在找到的第一个空间停止的原因。因此,.*?匹配第一个空格之前的所有内容,该空格匹配找到的第一个空格。

如果D是您的数据帧,请尝试

sub(".+? ", "", D$name)

下面的解决方案不使用gsub,但可以使用管道操作符%>%将其应用于数据帧。

library(tidyverse)
# The data
df <- structure(list(name = c("r apple", "y pear", "y cherry", "g watermelon",
        "pp grape", "y apple pear"), weight = c(0.5, 0.4, 0.1, 5.0, 0.5, 0.4)),
        class = "data.frame", row.names = c(NA, -6L))
# Remove the first characters preceding a white space in the column "name"
df2 <- df %>% 
        mutate(name = str_replace(name, "^\S* ", ""))

正则表达式"^\S* "搜索从字符串开头到第一个空格的所有字符。

假设你的数据帧名为" df "

library(reshape2)    
df$name = colsplit(df$name," ", names = c("chuck","name"))[,2]

相关内容

  • 没有找到相关文章

最新更新