【发布时间】:2020-06-01 21:10:14
【问题描述】:
尝试在此处扩展我自己的工作流程(从列):[1] tidyverse - delete a column within a nested column/list 以在嵌套列/列表中进行过滤,我发现了这个潜在的解决方案:[2] Use filter() (and other dplyr functions) inside nested data frames with map()
我的问题是我想过滤那些不完全不适用的行的每个“嵌套”(即,我想保留任何至少具有一个非缺失值的行。
但是,[2] 中的简单解决方案对我不起作用,可能是因为我想过滤每行 NA 的总和,这可能涉及过滤器中的另一个映射函数。
(注意:我在 tidyverse 中使用 dplyr 的当前 github 版本,它提供了一些新的实验功能,例如 condense - 我在下面使用,但我认为这与我的问题/问题无关)。
我有以下数据:
数据:
library(tidyverse)
library(corrr)
dat <- data.frame(grp = rep(1:4, each = 25),
Q1 = sample(c(1:5, NA), 100, replace = TRUE),
Q2 = sample(c(1:5, NA), 100, replace = TRUE),
Q3 = sample(c(1:5, NA), 100, replace = TRUE),
Q4 = sample(c(1:5, NA), 100, replace = TRUE),
Q5 = sample(c(NA), 100, replace = TRUE),
Q6 = sample(c(1:5, NA), 100, replace = TRUE))
我现在计算每组 Q1 到 Q6 的相关性并删除 rowname 列。
cor_dat <- dat %>%
group_by(grp) %>%
condense(cor = correlate(cur_data()) %>%
select(-rowname)) %>%
ungroup()
但是将此行添加到我的管道不起作用:
cor_dat <- cor_dat %>%
mutate(cor = map(cor, ~ filter(., sum(is.na(.)) != ncol(.))))
我也试过了,但这也不起作用:
cor_dat <- cor_dat %>%
mutate(cor = map(cor, ~ filter(., !all(is.na(.)))))
我的数据中的预期结果是每个嵌套中的第五行被过滤掉。
【问题讨论】:
-
确实,相应地编辑了我的帖子
-
当然。只是忘记了从另一个线程复制过来。相应地编辑了我的帖子。