gpt4 book ai didi

r - 在两列之间的 dplyr 中过滤,其中一列是列表或向量

转载 作者:行者123 更新时间:2023-12-02 17:09:38 25 4
gpt4 key购买 nike

尝试通过比较 lob 列中存在 prod 的这两列来过滤此 df:

可重现代码:

df <- data.frame(prod = c("CES", "Access", "Access", "CES"), lob = c("Access;Entertainment", "CES", "Access", "Access;Entertainment;CES"))

prod lob
1 CES Access;Entertainment
2 Access CES
3 Access Access
4 CES Access;Entertainment;CES

预期结果:

    prod                      lob
1 Access Access
2 CES Access;Entertainment;CES

我尝试将 lob 列拆分为向量或包含元素的列表,然后将 dplyr filtergrepl(prod, lob) 一起使用,或 prod %in% lob,但似乎都不起作用

df %>%
filter(prod %in% lob)

df %>%
mutate(lob = strsplit(lob, ";")) %>%
filter(prod %in% lob)

df %>%
mutate(lob = strsplit(lob, ";")) %>%
filter(grepl(prod), lob)

最佳答案

在其中添加一个 rowwise() 可能是最简单的

df %>%
mutate(lob = strsplit(lob, ";")) %>%
rowwise() %>%
filter(prod %in% lob) %>%
as.data.frame() # rowwise makes it a tibble, this changes it back if needed

如果你真的不想做mutate(),你可以做

df %>%
rowwise() %>%
filter(prod %in% strsplit(lob, ";")[[1]])

关于r - 在两列之间的 dplyr 中过滤,其中一列是列表或向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49908001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com