我试图通过遍历现有数据表的列来创建摘要统计数据表。所以我想计算每列的摘要统计信息。我的数据看起来像这样:
我尝试遍历列,但是当我这样做时,我无法像在常规数据帧中那样正常地提取列。我是data.table软件包的新手,所以我们将不胜感激。
DT <- data.table(math = c(7, 9, 3, 6), physics = c(7, 7, 4, 5),
biology = c(6, 8, 7, 6))
> DT
math physics biology
1: 7 7 6
2: 9 7 8
3: 3 4 7
4: 6 5 6
我想得到一个新的数据表,看起来像这样:
> DT2
subject mean median min max
1: math 6.25 6.5 3 9
2: physics 5.75 6.0 4 7
3: biology 6.75 6.0 6 8
答案 0 :(得分:0)
这是一个Tidyr解决方案,尽管您可能正在寻找数据。表一:
library(tidyr)
DT <- data.frame(math = c(7, 9, 3, 6), physics = c(7, 7, 4, 5),
biology = c(6, 8, 7, 6))
DTSum <- DT %>%
gather() %>%
group_by(key) %>%
summarize(
mean = mean(value),
median = median(value),
min = min(value),
max = max(value)
)
答案 1 :(得分:0)
如果您正在寻找个性化的东西,可以尝试构建一个函数,该函数将根据需要输出描述性表。但是,这带来了很多麻烦。
R中有许多软件包,它们提供了许多可以使用的功能。 psych
库产生的输出与您要寻找的结果非常相似。
示例:
library('psych')
DT <- data.frame(math = c(7, 9, 3, 6), physics = c(7, 7, 4, 5),
biology = c(6, 8, 7, 6))
describe.by(DT)
Ouput的:
vars n mean sd median trimmed mad min max range skew
math 1 4 6.25 2.50 6.5 6.25 2.22 3 9 6 -0.21
physics 2 4 5.75 1.50 6.0 5.75 1.48 4 7 3 -0.14
biology 3 4 6.75 0.96 6.5 6.75 0.74 6 8 2 0.32
kurtosis se
math -1.92 1.25
physics -2.28 0.75
biology -2.08 0.48