我试图用以下格式制作一个包含所有数值变量(即特征)的表格:
Feature | Count | % Missing | Cardinality | Min. | 1st Quartile | Mean | Median | 3rd Quartile | Max. | Std. Dev. |
-------- | ------- | ----------- | ------------- | ---- - | -------------- | ------ | -------- | -------------- | - ----- | ----------- | | | | | | | | | | | |
因此,每一行表示一个特定的数字变量,每列表示上面显示的统计数据(Count,%Missing,Cardinality,Min。,1st Quartile,Mean,Median,3rd Quartile,Max.Std.Dev。)
假设我的数据集名为Mashable,我的数值变量称为X,Y和Z.我将如何创建此表?
提前致谢!
答案 0 :(得分:1)
如果您已经使用dplyr
,则可以使用长形数据和分组,并将所需的所有功能视为摘要。这可以让你轻松扩展,因此它与3个变量的工作流程相同,而不是25或100.它还可以相对快速地应用你想要的任何功能。
我用x,y和z制作了虚拟数据,然后将几行NA
绑定到它上面,以显示缺失值计数。将其收集到长数据,按变量分组,然后使用您想要的任何摘要函数。我开始了你命名的前几个。这为您提供了所要求的格式。
library(tidyverse)
tibble(
x = rnorm(100, mean = 1, sd = 1),
y = rnorm(100, mean = 10, sd = 1),
z = rexp(100, rate = 0.01)
) %>%
bind_rows(tibble(x = c(NA, NA), y = c(NA, NA), z = c(NA, NA))) %>%
gather(key = variable, value = value) %>%
group_by(variable) %>%
summarise(
count = n(),
missing = sum(is.na(value)),
share_missing = missing / count,
mean = mean(value, na.rm = T),
sd = sd(value, na.rm = T),
q1 = quantile(value, 0.25, na.rm = T)
)
#> # A tibble: 3 x 7
#> variable count missing share_missing mean sd q1
#> <chr> <int> <int> <dbl> <dbl> <dbl> <dbl>
#> 1 x 102 2 0.0196 0.997 1.08 0.246
#> 2 y 102 2 0.0196 9.81 0.962 9.10
#> 3 z 102 2 0.0196 106. 90.6 39.9
由reprex package(v0.2.0)创建于2018-05-20。
答案 1 :(得分:0)
如果X,Y和Z是数据集的列,那么您可以将apply
函数用于R中数据集中的每一列,这将打印每个所需的统计信息,例如:
apply(dat,2,function(x) c(length(which(is.na(x)==TRUE)),summary(x)))
我的意思是一般来说你会在第一个参数中指定数据框。然后选择行/列或列表(例如,2是列,1是矩阵/ df的行),具体取决于您使用函数的结构类型。最后是一个函数,应用于previous参数中指定的每个列/行列。在这种情况下,我们使用c
函数输出NA的长度和数据的摘要(min,max,quartiles)。通过扩展我们可以在这里指定任何参数,所以一般来说:
apply("Insert your data-frame","What part of the data-frame",function(x) c(a(x),b(x),...))
最好阅读R帮助文件以获取任何其他要求!
希望它有所帮助;欢呼声。
答案 2 :(得分:0)
您可以使用dplyr
和tidyr
个包来转换您的数据。让我举一个例子来演示3个统计数据的转换(例如mean,median,sd
)。您可以添加其他统计信息,例如count
,% missing
等。
# Sample data
df <- data.frame(X = 1:10, Y = 11:20, Z = 101:110)
library(dplyr)
library(tidyr)
df %>% summarize_all(funs(mean,median,sd)) %>% #Statistics for mean, median,sd
gather(key, value) %>% #Convert to long format
separate(key, c("feature", "stat")) %>% #separate out feature from function
spread(stat, value)
# feature mean median sd
# 1 X 5.5 5.5 3.02765
# 2 Y 15.5 15.5 3.02765
# 3 Z 105.5 105.5 3.02765