r - 一个命令中的逐行正态性、偏度和峰度
问题描述
我的数据是:
X0 X1 X2 X3 category
0 15 4 4 TAH
0 2 5 0 MAT
0 11 9 0 BIO
我想计算 row-wise normality、skewness和kurtosis。主要原因是我在不同的行中有类别(在专用列中)。有没有可以实现这个功能的功能?
我一直在尝试使用moments
包和dplyr
包来做到这一点,类似于这篇文章:
Function that calculates, mean, variance and skewness in the same time in a dataframe。但他们的解决方案是按列而不是按行。
df3 %>%
gather(category, Val) %>%
group_by(category) %>%
summarise(Mean = mean(Val),
Vari = var(Val),
Skew = skewness(Val))
正常情况下,我为每一行分别尝试了以下命令:
shapiro.test(df3[1,])
对此的任何帮助将不胜感激。
解决方案
你可以使用rowwise
-
library(dplyr)
library(tidyr)
df %>%
rowwise() %>%
mutate(Mean = mean(c_across(X0:X3)),
Vari = var(c_across(X0:X3)),
Shap = shapiro.test(c_across(X0:X3))$p.value,
Skew = moments::skewness(c_across(X0:X3))) %>%
ungroup
# X0 X1 X2 X3 category Mean Vari Shap Skew
# <int> <int> <int> <int> <chr> <dbl> <dbl> <dbl> <dbl>
#1 0 15 4 4 TAH 5.75 41.583 0.232 0.84778
#2 0 2 5 0 MAT 1.75 5.5833 0.220 0.68925
#3 0 11 9 0 BIO 5 34 0.110 0.058244
与您的尝试类似,您可能会以长格式获取数据并计算每个category
(按行)的统计信息。
df %>%
pivot_longer(cols = -category) %>%
group_by(category) %>%
summarise(Mean = mean(value),
Vari = var(value),
Skew = moments::skewness(value))
推荐阅读
- python - 为什么我的 Python 代码显示错误的结果?
- node.js - Firebase - 验证会话 cookie 或 idtoken
- c++ - 类继承中的 C++ 变量不起作用
- bash - bash - 从不同目录运行时获取脚本所在的目录
- xcode - 未声明标识符的使用:Xcode、C 代码
- ssas - 从今天的 SSAS 时间维度中选择一年中的某一天
- php - PHP 将多维数组分割成更小的数组
- r - 拉伸x轴并将不同的binwidth应用于ggplot2 R中直方图中的值范围
- python - 无法在 Python 3.6.6 中导入 tensorflow
- django - 如何在 Django Rest Framework 中实现多模型搜索?