[英]Removing prefix from strings in R data frame
我有一个数据框wkt_small
其中包含以下数据:
id GEOMETRY
<chr> <chr>
1 PTK01 LINESTRING( 1.142 85.892 1.400, 0.991 85.892 1.400)
2 PTK02 LINESTRING( 2.142 85.892 1.400, 0.991 85.892 1.400)
...
我需要的是它看起来像这样:
id GEOMETRY
<chr> <chr>
1 PTK01 ( 1.142 85.892 1.400, 0.991 85.892 1.400)
2 PTK02 ( 2.142 85.892 1.400, 0.991 85.892 1.400)
...
我尝试了以下方法:
wkt_small[, 2] <- gsub('^\\w+', '', wkt_small[, 2])
但是,这为所有行的GEOMETRY
提供了以下值:
("LINESTRING( 1.142 85.892 1.400, 0.991 85.892 1.400, 0.991 85.301 1.4)","LINESTRING( 1.142 85.892 1.400, 0.991 85.892 1.400, 0.991 85.301 1.4)"...
将第一行值与我想为数据框中所有条目删除的字符串连接起来。
使用[[…]]
或$…
选择单列,而不是[, …]
:
wkt_small$GEOMETRY <- sub('^\\w+', '', wkt_small$GEOMETRY)
...实际上,使用适当的data.frame
您的代码也可以正常工作; 但是对于 tibble, [
索引总是返回 tibble ,而不是列向量。 tibble 语义等同于将[, …, drop = FALSE]
与常规data.frame
。
更新:我们可以使用str_remove
(在这种情况下更好):
library(stringr)
wkt_small %>%
mutate(GEOMETRY = str_remove(GEOMETRY, '^\\w+'))
我们可以使用stringr
包中的str_replace
和正则表达式"^[AZ]*"
library(dplyr)
library(stringr)
df %>%
mutate(GEOMETRY = str_replace(GEOMETRY, "^[A-Z]*", ""))
输出:
id GEOMETRY
<chr> <chr>
1 PTK01 ( 1.142 85.892 1.400, 0.991 85.892 1.400)
2 PTK02 ( 2.142 85.892 1.400, 0.991 85.892 1.400)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.