r summarise_if 有多个条件

标签 r dplyr mode reduction summarize

我试图将观察的 df 减少到单个观察(单行)。
我想 summarise_if 是带有均值的数字,而 if 是带有模式的字符串或因子。下面的代码不起作用,但我希望它给出了想法。
谢谢!

#data frame
num <- c(1:7)
str <- c("toy","control","play",NA,"give","toy","toy")
df_finale <- data.frame(num,str)

#mode function
Mode <- function(x) {
        ux <- unique(x)
        ux[which.max(tabulate(match(x, ux)))]
}

#df reduction
df_finale <- df_finale %>%
                    summarize_if(is.numeric, mean, na.rm = TRUE) %>%
                    summarize_else_if(!is.numeric, Mode)

最佳答案

一种可能是:

df_finale %>%
 summarise_all(~ if(is.numeric(.)) mean(., na.rm = TRUE) else Mode(.))

  num str
1   4 toy
或者自 dplyr 1.0.0 以来的一个选项:
df_finale %>%
 summarise(across(everything(), ~ if(is.numeric(.)) mean(., na.rm = TRUE) else Mode(.)))

关于r summarise_if 有多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61638625/

相关文章:

web-services - 如何将 R 集成到 Web 应用程序中

r - Dplyr - 错误 : column '' has unsupported type

r - 使用循环 ggplot2 将各种函数添加到同一个绘图中

r - 使用 dplyr select() 在 for 循环中生成 ggplot 对象时最终对象出错

javascript - 列表中最常出现的数字(众数) - 只想获取最高值

C++11 - 计算数字 vector 中的模式时出错

r - write.csv 在数据框列表上

r - 如何将列表值列拆分为多列?

r - 为什么是enquo + !!最好替代+评估

Vim:为什么在粘贴模式下不显示光标位置?