[英]data.table text filtering R
我正在尝试过滤 data.table 的一些文本,寻找与 dplyr::filter 类似的方法(出于效率原因,我使用 data.table 方法)。
但是,data.table 中的过滤过程只返回找到完全匹配的字符串。 相反,dplyr::filter 返回找到模式的行,而不仅仅是当它是精确模式时。
请参阅下面的示例。
df <- data.frame (first = c("value_1 and value_2", "value_2", "value_1", "value_1"),
second = c(1, 2, 3, 4))
dt.output <- setDT(df)[first %in% c("value_1") ]
filter.output <- dplyr::filter(df, grepl("value_1", first))
dt.output
仅返回唯一包含value_1
(3, 4) 的行。 filter.output
返回包含value_1
(1, 3, 4) 的行
是否可以使用 data.table 过滤文本,同时返回与dplyr::filter
相同的结果?
df <- data.frame (first = c("value_1 and value_2", "value_2", "value_1", "value_1"),
second = c(1, 2, 3, 4))
dt.output <- setDT(df)[first %in% c("value_1") ]
filter.output <- dplyr::filter(df, grepl("value_1", first))
此行为不是dplyr::filter
vs data.table
。 只是%in%
正在寻找固定匹配,而grepl
也为 substring 匹配返回 TRUE。 如果我们在 data.table 中使用grepl
,它也可以工作
library(data.table)
setDT(df)[grepl("value_1", first)]
first second
1: value_1 and value_2 1
2: value_1 3
3: value_1 4
或者也可以使用%like%
setDT(df)[first %like% "value_1"]
first second
1: value_1 and value_2 1
2: value_1 3
3: value_1 4
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.