如何解决仅当字符串匹配多个列时如何过滤行
仅当一个字符串匹配多个列时,我才想过滤行。我在寻找答案,但没有找到。我想我并不完全知道要寻找什么。
所以,可以说我有点像这样。
library(tibble)
tib1 <- tibble(ID = 1:3,Col.1 = c("Hi","Hello","ND"),Col.2 = c("Bye","ND","ND"))
tib1
# A tibble: 3 x 3
ID Col.1 Col.2
<int> <chr> <chr>
1 1 Hi Bye
2 2 Hello ND
3 3 ND ND
我想知道如何获得此回报。
# A tibble: 1 x 3
ID Col.1 Col.2
<dbl> <chr> <chr>
1 3 ND ND
我尝试了如下代码行,但是它总是返回所有与字符串匹配的行。
tib1 %>% filter_at(vars(Col.1,Col.2),any_vars(str_detect(.,"ND")))
# A tibble: 2 x 3
ID Col.1 Col.2
<int> <chr> <chr>
1 2 Hello ND
2 3 ND ND
我该怎么做?我想用tidyverse包来做。
谢谢,祝你有美好的一天。
解决方法
这应该提供您想要的输出-将structure(list(PIA_ITEM = structure(c(2L,2L,4L,4L),.Label = c("GH26 2.6t Typ 1172-89","GH26 11,6t Typ 3611","GH26 13,6t Typ 3621","GH26 5,9t Typ 3613","GH26 29,0t Typ 3615","GH26 24,0t Typ 3625",2t Typ 3630"
),class = "factor"),DELY_QTY = c(43L,37L,41L,73L,34L,53L,47L,51L,43L,30L,44L,84L,16L,24L,12L,11L,20L,20L)),row.names = c(NA,20L),class = "data.frame")
更改为any_vars
,这会使谓词从all_vars
更改为|
。
&
,
has_multiple <- function(s,v) {
occurrences <- v == s
sum(occurrences) > 1
}
tib1 %>%
rowwise() %>%
filter(has_multiple('ND',c_across(Col.1:Col.2)))
@EJJ的答案将返回所有所有变量为“ ND”的行。
我的代码返回其中两个或更多(但不一定是全部)变量为'ND'的行。
当然,在此示例中,只有两个变量,结果是相同的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。