如何从数据末尾删除“/”。我们假设这是我的数据
#input
ID page
1 www.example.com/, ww.example.com/flight, www.example.com/flight/
2 www.example.com/, ww.example.com/flight
我希望从那些拥有最后一个角色的人中删除“/”,我的输出将是那样的
#output
ID page
1 www.example.com, ww.example.com/flight, www.example.com/flight
2 www.example.com, ww.example.com/flight
答案 0 :(得分:7)
一个选项:
gsub("/(?=,|$)", "", as.character(df$page), perl = TRUE)
#[1] "www.example.com, ww.example.com/flight, www.example.com/flight"
#[2] "www.example.com, ww.example.com/flight"
这会检查/
后面是逗号,
还是字符串$
的结尾,如果找到,/
将替换为""
{1}},即删除它。由于这是一个后视,我们使用perl = TRUE
。
其他选项(效率较低):
sapply(strsplit(as.character(df$page), ", ", fixed = TRUE), function(x) toString(sub("/$", "", x)))
#[1] "www.example.com, ww.example.com/flight, www.example.com/flight"
#[2] "www.example.com, ww.example.com/flight"
答案 1 :(得分:2)
我们可以在没有外观的情况下使用gsub
。在这里,我们删除/
后跟字符串末尾($
)或,
并且将其替换为,
。在随后的sub
中,我们会删除最后的,
。
df1$page <- sub(",$", "", gsub("/($|,)", ",", df1$page))
df1$page
#[1] "www.example.com, ww.example.com/flight, www.example.com/flight"
#[2] "www.example.com, ww.example.com/flight"
或另一种选择是
gsub("/(?!\\b)", "", df1$page, perl = TRUE)
#[1] "www.example.com, ww.example.com/flight, www.example.com/flight"
#[2] "www.example.com, ww.example.com/flight"