我正在使用包skimr总结所有的逻辑数据,所以我很自然地想按平均值排序结果,从最大到最小。
我已经尝试为dplyr将撇除函数输送到arrange,但这不起作用。
我们只是在一个数据框架上使用skim函数,这些数据帧都是布尔人/逻辑逻辑。
发布于 2019-10-25 15:54:48
我试过了,看起来一切都像我想的那样。skim_df是从data.frame继承而来的,我不明白为什么dplyr函数不能在它上工作。
set.seed(123)
df <- data.frame(a = sample(c(T,F), 50, replace = TRUE),
b = c(rep(F,25), sample(c(T,F), 25, replace = TRUE)),
c = c(rep(T,25), sample(c(T,F), 25, replace = TRUE)))
sdf <- skimr::skim(df) %>%
dplyr::filter(stat == "mean") %>% dplyr::arrange(desc(value))
sdf输出
variable type stat level value formatted
<chr> <chr> <chr> <chr> <dbl> <chr>
1 c logical mean .all 0.8 0.8
2 a logical mean .all 0.5 0.5
3 b logical mean .all 0.26 0.26 我不知道你有什么问题。仔细检查代码中是否有明显的错误。
发布于 2019-11-14 05:53:55
以下是v2的答案。在v2中,浏览对象不再是长对象。在这里,select()将浏览对象转换为常规的tibble (focus()),将其保持为skimr对象)。
skim(df) %>% dplyr::select(skim_variable, logical.mean) %>%
dplyr::arrange(desc(logical.mean))
# A tibble: 3 x 2
skim_variable logical.mean
<chr> <dbl>
1 c 0.7
2 a 0.6
3 b 0.34另一个选择
skim(df) %>% skimr::focus(skim_variable, logical.mean) %>%
dplyr::arrange(desc(logical.mean)) %>% as.data.frame()
skim_type skim_variable logical.mean
1 logical c 0.70
2 logical a 0.60
3 logical b 0.34让两个元列就位。as.data.frame()是防止摘要打印的一种方法,但您也可以告诉它打印不包括摘要。
skim(df) %>% skimr::focus(skim_variable, logical.mean) %>%
dplyr::arrange(desc(logical.mean)) %>%
print(include_summary = FALSE)
── Variable type: logical ────────────────────────────────────────────────────────────────
skim_variable mean
1 c 0.7
2 a 0.6
3 b 0.34https://stackoverflow.com/questions/58560928
复制相似问题