尝试通过比较列中prod存在的这两列来过滤此 df lob:
可重现的代码:
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
Run Code Online (Sandbox Code Playgroud)
预期结果:
prod lob
1 Access Access
2 CES Access;Entertainment;CES
Run Code Online (Sandbox Code Playgroud)
我尝试将 lob 列拆分为向量或包含元素的列表,然后dplyr filter与grepl(prod, lob), or 一起使用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)
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
如果你真的不想做mutate(),你可以做
df %>%
rowwise() %>%
filter(prod %in% strsplit(lob, ";")[[1]])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
786 次 |
| 最近记录: |