首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何获得按键分组的平均值和标准差?

如何获得按键分组的平均值和标准差?
EN

Stack Overflow用户
提问于 2009-09-11 19:57:27
回答 7查看 2.7K关注 0票数 2

我需要找出这种格式的大量数据的平均值和标准差。我尝试使用Excel,但似乎没有一种简单的方法来转置列。我在Excel中遗漏了什么,还是应该只使用Perl?

输入文件格式为:

0 123

0 234

0 456

1657

1234

1543

希望结果根据第一列中的值对平均值和标准差进行分组:

0 AvgOfAllZeros StdDevOfALlZeros

1个AvgOfAllOnes StdDevOfAllOnes

EN

回答 7

Stack Overflow用户

发布于 2009-09-11 22:38:07

在R中很容易做到这一点。如果您的数据在一个名为foo的文件中,那么下面的代码将完成此任务:

代码语言:javascript
运行
复制
> data <- read.table("foo")
> cbind(avg=with(data, tapply(V2, V1, mean)),
+       stddev=with(data, tapply(V2, V1, sd)))
  avg   stddev
0 271 169.5553
1 478 218.8630
票数 3
EN

Stack Overflow用户

发布于 2009-09-11 20:07:15

裂缝的指节

使用 CPAN模块,您可以使用以下命令获得它:

代码语言:javascript
运行
复制
use strict;
use warnings;
use Statistics::Descriptive;

my ($file) = @ARGV;

my @zeroes;
my @ones;

# Reading it in
open my $fh, '<', $file or die "unable to open '$file', $!";

while (my $line = <$fh>)
{
   chomp $line;
   my ($value, $number) = split("\s+", $line);
   if ($value)
   {
      push @ones, $number;
   }
   else
   {
      push @zeroes, $number;
   }
}
close $fh or warn "Can't close fh! $!";

# Stat processing
$stat_zeroes   = Statistics::Descriptive::Full->new();
$stat_ones     = Statistics::Descriptive::Full->new();

$stat_zeroes->add_data(@zeroes);
$stat_ones->add_data(@ones);

print "0: ", $stat_zeroes->mean(), " ", $stat_zeroes->standard_deviation(), "\n",
      "1: ", $stat_ones->mean(), " ", $stat_zeroes->standard_deviation(), "\n";
票数 2
EN

Stack Overflow用户

发布于 2009-09-13 20:04:22

如果在Excel中手动执行此操作,则可以复制数据,然后使用“选择性粘贴”菜单选项进行粘贴。这里有一个转置复选框。

如果您经常这样做,这里有一个Perl脚本。内存复杂度与输出大小成线性关系,因此在只有两行的情况下是恒定的:

代码语言:javascript
运行
复制
#!/usr/bin/perl

while (<>) {
    my ($x, $y) = split;
    $sum{$x} += $y;
    $count{$x}++;
    $sumSq{$x} += $y * $y;
}

for $i (sort keys %sum) {
    $stdev = sqrt(($sumSq{$i} - $sum{$i} * $sum{$i} / $count{$i}) / ($count{$i} - 1));
    print $i, " ", $sum{$i}/$count{$i}, " ", $stdev, "\n";
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1412970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档