在特定字符之前删除字符串的最简单方法是什么?
数据如下:
library(tidyverse)
df <- data.frame(var1 = c("lang:10,q1:10,m2:20,q3:20,m5:10",
"lang:1,q1:10,m2:20,m3:20,q3:10",
"lang:100,q1:10,m2:20"))
现在,我想删除每一行开头的“ lang:xy”部分。 我尝试使用“分隔”,但之后也使用了逗号(第一个逗号之后的所有内容都应保持在一起)。
所以我想要的输出是:
var1
-------------------------
q1:10,m2:20,q3:20,m5:10
q1:10,m2:20,m3:20,q3:10",
q1:10,m2:20
谢谢!
答案 0 :(得分:1)
您可以使用str_remove
包中的stringr
:
df %>%
mutate(
var1 = var1 %>% str_remove("^lang:[0-9]*,")
)
答案 1 :(得分:1)
或尝试以下操作:
library(tidyverse)
#Code
df %>% mutate(id=1:n()) %>%separate_rows(var1,sep = ',') %>%
filter(!grepl('lang',var1)) %>%
mutate(var='var') %>%
group_by(id) %>%
summarise(var1=paste0(var1,collapse = ',')) %>% ungroup() %>%
select(-id)
输出:
# A tibble: 3 x 1
var1
<chr>
1 q1:10,m2:20,q3:20,m5:10
2 q1:10,m2:20,m3:20,q3:10
3 q1:10,m2:20
答案 2 :(得分:1)
仅需四舍五入,基于R的sub
函数在这里也可以工作:
df$var1 <- sub("^lang:\\d+,", "", df$var1)
df
var1
1 q1:10,m2:20,q3:20,m5:10
2 q1:10,m2:20,m3:20,q3:10
3 q1:10,m2:20
答案 3 :(得分:1)
我们可以使用trimws
中的base R
df$var1 <- trimws(df$var1, whitespace = "lang:\\d+,")