【发布时间】:2020-08-17 18:58:49
【问题描述】:
我是 R 世界的新手,这些天我对 dplyr 的过滤功能有疑问。我有一个 df 和一个我需要过滤大于数字的值,但在某些行中我有多个值(由 ; 分隔。 例如我有这个df
ID value1 value2
1 1;0;3.4 4
2 3 5
3 0.5;2;1.3 0
4 5;0.1 3
我的过滤器是 value1 中的一个或多个是否大于或等于 3。我使用 dplyr 的功能过滤器,因为我需要实现其他过滤器到 df。这是我的代码。
filt <- df %>% filter(any(as.numeric(unlist(strsplit(value1,';',fixed=TRUE))) >=3))
但在这种情况下,any 函数会考虑 df 的所有值(而不是像我想的那样按行),所以,我获得了所有 df,这是不正确的。
对于这个例子,我需要获取 id 为 1,2 和 4 的行。
我认为我应该按行检查并按 ; 分隔,但是我不知道如何使用dplyr的过滤功能来做到这一点。
非常感谢!
【问题讨论】:
-
在过滤器之前使用
rowwise(),以便逐行进行处理,或者更好的是,使用tidyr::separate_rows之类的东西将数据转换为更“整洁”的格式 -
哦,谢谢!我真的很喜欢这个解决方案!