r - 如何编写一个计算数值和分类变量的描述性统计的函数?
问题描述
我有以下示例数据:
ID GLUC TGL HDL LDL HRT MAMM SMOKE
A 88 NA 32 99 Y NA never
B NA 150 60 NA NA no never
C 110 NA NA 120 N NA NA
D NA 200 65 165 NA yes never
我需要为数值变量编写一个函数,计算平均值、中位数、STD,并计算缺失值的数量(NMiss)。对于字符变量,我需要将变量每个级别内的计数制表并计算缺失值的数量。
我想要的结果是一个长度为 2 的列表。列表的每个组件要么是一个包含统计信息的数据框,要么是一个 NULL 值,如下所示:
table1 (dat=patient, numvar=c("TGL", "HDL", "LDL"),
charvar=c("HRT", "MAMM"))
$numericStats
varName MEAN MEDIAN SD NMiss
TGL 180.66667 180.0 23.03620 4
HDL 55.66667 62.5 19.00175 4
LDL 160.28571 165.0 40.06126 3
$FactorStats
varName group count
HRT N 2
Y 3
NMiss 5
MAMM no 2
yes 4
NMiss 4
到目前为止我所拥有的功能:
table1 <- function(dat, varlist){
if (!all(is.element(varlist, names(dat))))
stop ("One or more of the variables are not in the data.")
result <- matrix(numeric(length(varlist)*5), nrow = length(varlist))
for (i in 1:length(varlist)){
var_select <- dat[[varlist[i]]]
mean_value <- round(mean(var_select, na.rm=T),2)
median_value = round(median(var_select, na.rm=T),2)
SD <- round(sd(var_select, na.rm=T),2)
N <- length(var_select[!is.na(var_select)])
N_miss <- length(var_select[is.na(var_select)])
result[i,] <- c(mean_value, median_value, SD, N, N_miss) + }
colnames(result) <- c("Mean", "Median", "SD", "N", "N_miss")
rownames(result) <- varlist
return(result)
}
我不知道如何在我的函数中包含分类因素。任何帮助是极大的赞赏。
解决方案
推荐阅读
- python - 即使我已成功安装,我也无法在 Python 3.9.4 中导入 gdal
- python - 您能解释一下将参数作为带括号和不带括号的函数发送的行为差异吗?
- lua - ROBLOX:如何触发更改文本?
- javascript - 我希望有人能弄清楚为什么这个函数将错误的 ID 号传递给 url
- flutter - Flutter 调试模式无需 Internet 许可即可工作
- selenium - Robotframework - 使用 Run Keyword If /ELSE 时出错
- user-interface - 如何在主窗口中显示声明为 vbox/hbox 的数组?
- mysql - MySQL SELECT GROUP_CONCAT 并在另一个选择的 WHERE 子句中使用它
- android - 在 Android Studio 上设置多个闹钟
- sql - 如何对 SQL 中的计算列执行求和?