我有一个数据集,我试图根据3个不同的列进行筛选。
我有2列的字符值计算出来的执行:过滤器(TRANSACTION_TYPE!=“ABC”,CUSTOMER_CODE ==“123”)但是,我有一个“VERSION”列,其中每个客户都有多个版本,这些版本将复制我的$金额。我希望仅筛选包含小数点“.000”的版本,因为.000表示最终和最准确的版本。例如,版本可以= 20220901.000和20220901.002(enter image description here)、20220901.003等。但是,小数点前的数字总是会变化,因此我无法对其进行过滤以使其等于20220901,因为它会按天变化。
我希望我说得够清楚了,谢谢!
1条答案
按热度按时间lyr7nygr1#
示例数据:
如果数据中
is.character(quux$VERSION)
为真,则说明:
"\\.000$"
匹配字符串($
)末尾的文本句点.
(由于它是正则表达式保留符号,因此需要转义)后跟三个文本零000
。有关正则表达式的更多信息,请参见https://stackoverflow.com/a/22944075/3358272。如果为false(并且不是
factor
),则说明:
abs(.) < 1e-3
可以防御高精度的相等性测试,因为浮点数的限制(通常在计算机中)并不总是将非常接近零的数字视为零。请参阅Why are these numbers not equal?,https://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-doesn_0027t-R-think-these-numbers-are-equal_003f。. %% 1
是模数运算符,将数字缩减到其小数部分。