在R中使用ifElse语句进行汇总统计

编程入门 行业动态 更新时间:2024-10-09 18:19:43
本文介绍了在R中使用ifElse语句进行汇总统计的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我要设置我的自定义摘要统计信息函数,如果列是一个因素,我希望看到prop.table而不是摘要统计信息。

set.seed(123) df <- data.frame(replicate(6, sample(c(1:10, -99),6, rep = T))) df$X7 <- factor(df$X6, levels = c(7,9,10)); str(df) summary <- function(x){ if (is.numeric(x)){ funs <- c(mean, median, sd, mad, IQR) lapply(funs, function(f) f(x, na.rm = T)) } else df[] <- {lapply(df, prop.table)} #not sure how to save the outcome } summary(df)

预期答案

mean median sd mad IQR X1 mean(X1) X2 mean(X2) X3 X4 X5 X6 X7.Factor7 prop.table(X7.Factor7) X7.Factor9 prop.table(X7.Factor9) X7.Factor10 prop.table(X7.Factor10) 推荐答案

您需要重新考虑您希望输出的显示方式。描述性统计数据和表格不容易组合,因为它们可能以任何顺序出现。这里有一个开始思考它的方法。

stats <- function(x) { if (is.numeric(x)) { c(mean=mean(x), median=median(x), sd=sd(x), mad=mad(x), IQR=IQR(x)) } else { prop.table(table(x)) } } result <- sapply(df, stats) result # $X1 # mean median sd mad IQR # -12.50000 3.00000 42.47705 2.96520 3.00000 # # $X2 # mean median sd mad IQR # -10.83333 5.50000 43.25467 3.70650 4.00000 # # $X3 # mean median sd mad IQR # -10.66667 7.00000 43.34820 2.96520 5.50000 # # $X4 # mean median sd mad IQR # 7.833333 8.500000 2.639444 2.223900 2.500000 # # $X5 # mean median sd mad IQR # -13.16667 3.50000 42.09711 2.96520 3.25000 # # $X6 # mean median sd mad IQR # 8.666667 9.000000 1.366260 1.482600 2.250000 # # $X7 # x # 7 9 10 # 0.3333333 0.3333333 0.3333333

您可以将数字向量与

num <- sapply(df, is.numeric) do.call(rbind, result[num])

但您仍必须分别处理这些表。

更多推荐

在R中使用ifElse语句进行汇总统计

本文发布于:2023-11-28 20:01:29,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1643771.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:语句   ifElse

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!