【发布时间】:2019-06-18 15:06:19
【问题描述】:
我正在尝试过滤掉所有包含不以 $.0、$.00、$.50 或 $.5 结尾的票价的数据
票价栏应始终以$.0, $.00, $.50, $.5结尾
我的数据如下所示:
df =
|date |id |fare
1|2018-11-25|12345|5.50
2|2018-11-26|12345|2.0
3|2018-11-26|12355|2.61
4|2018-11-27|12345|12.60
5|2018-11-27|12348|22.65
我尝试使用 grepl 函数,但它只是解决了我的问题。它包含了我想要的内容,但缺少很多我预计会出现的数据。
df[grepl("\\.(?:.00$|.0$|.50$|.5$)$",df$fare), ]
我想创建一个包含第 3:5 行的新 df
dfgood =
|date |id |fare
3|2018-11-26|12355|2.61
4|2018-11-27|12345|12.60
5|2018-11-27|12348|22.65
【问题讨论】:
-
小提示:如果你先将它们全部乘以 100,事情可能会更简单。
-
行 3:5 应该在最终输出中,因为?
-
你可以试试
df[df$fare %% .5 > 0, ]。 -
真的取决于你的数据是数字还是字符。如果是字符,请坚持使用
grepl方法。如果是数字,则乘以%%。
标签: r regex tidyr stringr grepl