名称

SimpleR::Reshape 数据处理转换

说明

接口山寨自R语言的read.table

还有reshape2包:http://cran.r-project.org/package=reshape2

函数

实例参考xt子文件夹

read_table

支持 从文件或arrayref 按行读入数据,转换后输出新的 文件或arrayref

my $r = read_table(
    'reshape_src.csv', 
    skip_head=>1, 
    conv_sub => sub { [ "$_[0][0] $_[0][1]", $_[0][2], $_[0][3] ] }, 

    write_filename => '01.read_table.csv', 
    #skip_sub => sub { $_[0][3]<200 }, 
    #return_arrayref => 1, 
    #sep=>',', 
    #charset=>'utf8', 
);

melt

数据调整,参考R语言的reshape2包

my $r = melt('reshape_src.csv',
    skip_head => 1, 

    names => [ qw/day hour state cnt rank/ ], 

    #skip_sub => sub { $_[0][3]<1000 }, 
    id => [ 0, 1, 2 ],
    measure => [3, 4], 
    melt_filename => '02.melt.csv',
);

cast

数据重组,参考R语言的reshape2包

my $r = cast('02.melt.csv', 
    cast_filename => '03.cast.csv', 

    names => [ qw/day hour state key value/ ], 
    id => [ 0, 1, 2 ],
    measure => 3, 
    value => 4, 

    stat_sub => sub { my ($vlist) = @_; my @temp = sort { $b <=> $a } @$vlist; return $temp[0] }, 
    result_names => [ qw/day hour state cnt rank/ ], 
);