R:汇总列表与常规列表

时间:2019-03-13 22:58:42

标签: r merge aggregate

因此有一个名为DAAG的图书馆,里面有关于运动员的一些统计信息,称为“ ais”。我想根据运动为几个子集计算一些统计数据。然后,我想将所有这些组的统计数据放在一起,并将所有这些统计数据放到一个数据结构中。

使用R中的以下代码,我已经生成了2个列表(按运动分组1个汇总,使用自定义FUN汇总1个)

SELECT id_group, GROUP_CONCAT(names SEPARATOR ' ') AS names
FROM groups
JOIN group_name USING (id_group)
JOIN names USING (id_name)

现在,我想合并这些列表,但是常规列表不起作用。尽管两者的类型都是列表,但它们似乎是不同的:

library(DAAG)
data(ais)

sub4 <- subset(ais, sport=="Row" | sport=="Netball" | sport=="Tennis")

resultstats1 <- aggregate(x = sub4$ht,
          by = list(sub4$sport),
          FUN = function(x) c(mean = mean(x), sd = sd(x), min = min(x),
                              q1 = quantile(x, 0.25), median = median(x),
                              q3 = quantile(x, 0.75), max = max(x),
                              IQR = IQR(x)))


statistieken <- function(x){
  list(mean = mean(x), sd = sd(x), min = min(x),
    q1 = quantile(x, 0.25), median = median(x),
    q3 = quantile(x, 0.75), max = max(x),
    IQR = IQR(x))
}
resultstats2 <- statistieken(sub4$ht)

这两个列表为何如此不同?以及如何合并它们以得到1个整齐的列表:

> resultstats1
  Group.1     x.mean       x.sd      x.min   x.q1.25%   x.median   x.q3.75%      x.max      x.IQR
1 Netball 176.086957   4.123580 168.600000 173.450000 176.000000 179.150000 183.300000   5.700000
2     Row 182.375676   7.798376 156.000000 179.300000 181.800000 186.300000 198.000000   7.000000
3  Tennis 174.163636   9.858121 157.900000 167.300000 175.000000 180.750000 190.800000  13.450000

> resultstats2
$mean
[1] 179.0662
$sd
[1] 7.936371
$min
[1] 156
$q1
   25% 
174.25 
$median
[1] 179.5
$q3
  75% 
183.4 
$max
[1] 198
$IQR
[1] 9.15

OZT @ jens-buysse

0 个答案:

没有答案