如何解决Tidyr:删除字符串直到某个字符
在特定字符之前删除字符串的最简单方法是什么?
数据如下:
library(tidyverse)
df <- data.frame(var1 = c("lang:10,q1:10,m2:20,q3:20,m5:10","lang:1,m3:20,q3:10","lang:100,m2:20"))
现在,我想删除每一行开头的“ lang:xy”部分。 我尝试使用“分隔”,但之后也使用了逗号(第一个逗号之后的所有内容都应保持在一起)。
所以我想要的输出是:
var1
-------------------------
q1:10,m5:10
q1:10,m2:20
谢谢!
解决方法
您可以使用str_remove
包中的stringr
:
df %>%
mutate(
var1 = var1 %>% str_remove("^lang:[0-9]*,")
)
,
或尝试以下操作:
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,m3:20,q3:10
3 q1:10,m2:20
,
仅需四舍五入,基于R的sub
函数在这里也可以工作:
df$var1 <- sub("^lang:\\d+,","",df$var1)
df
var1
1 q1:10,q3:10
3 q1:10,m2:20
,
我们可以使用trimws
中的base R
df$var1 <- trimws(df$var1,whitespace = "lang:\\d+,")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。