kim*_*801 2 grep r extract subset
在数据框的一列中,我有经度值.例如:
df<-data.frame(long=c(-169.42000,144.80000,7.41139,-63.07000,-62.21000,14.48333,56.99900))
我想保留至少有三个小数位的行(即小数点后紧跟三个非零值)并删除所有其他行.因此,df在上面的示例中将删除行1,2,4和5 .
到目前为止,我已经尝试使用grep提取我想要保留的行:
new.df<-df[-grep("000$",df$long),]
但是这已经删除了所有行.有任何想法吗?我是使用grep的新手,所以可能会有一些我没有注意到的明显错误!
非常感谢!
我不会使用正则表达式.
tol <- .Machine$double.eps ^ 0.5
#use tol <- 0.001 to get the same result as with the regex for numbers like 0.9901
discard <- df$long-trunc(df$long*100)/100 < tol
df[!discard, , drop=FALSE]
# long
# 3 7.41139
# 6 14.48333
# 7 56.99900
Run Code Online (Sandbox Code Playgroud)