App-Bin4TSV-8

 view release on metacpan or  search on metacpan

8.pm  view on Meta::CPAN

=head1 SYNOPSIS

This module provides a Unix-like commands of :  

  colgrep
  colsummary
  crosstable 
  csel
  csv2tsv
  digitdemog
  expandtab
  venn
 
=head1 DESCRIPTION

=head1 SEE ALSO

=cut

1 ;

INSTALL  view on Meta::CPAN

  By doing the command above, it will also install the 
  following modules as the dependency requirements. 


   App::colsummary
   App::colgrep
   App::crosstable  
   App::csel
   App::csv2tsv    # This will also install Text::CSV
   App::digitdemog
   App::expandtab  # This will also install Text::VisualWidth
   App::venn

META.json  view on Meta::CPAN

         }
      },
      "runtime" : {
         "requires" : {
            "App::colgrep" : "0",
            "App::colsummary" : "0",
            "App::crosstable" : "0",
            "App::csel" : "0",
            "App::csv2tsv" : "0",
            "App::digitdemog" : "0",
            "App::expandtab" : "0",
            "App::venn" : "0"
         }
      }
   },
   "release_status" : "stable",
   "version" : "0.120"
}

META.yml  view on Meta::CPAN

  directory:
    - t
    - inc
requires:
  App::colgrep: '0'
  App::colsummary: '0'
  App::crosstable: '0'
  App::csel: '0'
  App::csv2tsv: '0'
  App::digitdemog: '0'
  App::expandtab: '0'
  App::venn: '0'
version: '0.120'

Makefile.PL  view on Meta::CPAN

WriteMakefile (
  NAME            => 'App::Bin4TSV::8' ,
  VERSION_FROM    => '8.pm' , 
  PREREQ_PM => {
    App::colgrep => 0 ,
    App::colsummary => 0 , 
    App::crosstable => 0 , 
    App::csel => 0 , 
    App::csv2tsv => 0 , 
    App::digitdemog => 0 ,
    App::expandtab => 0 , 
    App::venn => 0 
  },
  AUTHOR => 'Toshiyuki SHIMONO (bin4tsv at gmail.com)' , 
  LICENSE => 'perl_5' 
) ;
 

README  view on Meta::CPAN

This module provides a Unix-like commands: 

 colgrep
 colsummary
 crosstable
 csel
 csv2tsv
 digitdemog
 expandtab
 venn


 Copyright (c) 2021 Toshiyuki SHIMONO. All rights reserved.
 This program is free software; you can redistribute it and/or
 modify it under the same terms as Perl itself.

README.md  view on Meta::CPAN

```
setopt interactivecomments
# ↑ この上記のコマンド1行を実行することで、zshにおいて # より後ろが bash のようにコメントと見なされる。
# ↑ もしも上記を解除したくなった場合は unsetopt interactivecomments
```

### 本レポジトリコマンドを別個にインストールする方法

```
cpanm App::csv2tsv #←Text::CSVに依存. 約20秒
cpanm App::expandtab #← Text::VisualWidthに依存
cpanm App::colsummary # 残りは、それぞれ約2秒で完了
cpanm App::venn # モジュール名はApp::コマンド名
cpanm App::csel # アンインストールの時は -U を使う↓
cpanm App::crosstable # 例. cpanm -U App::csel
cpanm App::freq # cpanm -vでインストール詳細を表示
cpanm App::digitdemog
```


### CSV形式からTSV形式に変換する(csv2tsv)

README.md  view on Meta::CPAN


```
cpanm App::csv2tsv
wget  https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv
file syukujitsu.csv # → Non-ISO extended-ASCII text, with CRLF line terminators
nkf syukujitsu.csv | less
nkf syukujitsu.csv | csv2tsv > syukujitsu.tsv
less -x25 syukujitsu.tsv
```

### 列を縦に揃えて表示する機能(expandtab)

```
cpanm App::expandtab # 約8秒. Text::VisualWidthに依存
tr ":" "\t" < /etc/passwd | expandtab | less -NS
sed 1,10d /etc/passwd | expandtab -i: -b. | less -NS
```

### 全各列の特徴をコンパクトに表示(colsummary)

1. /etc/passwdを使う例

```
colsummary -i: <( grep -v -e '^#' /etc/passwd )
```

2. インターネット上の「TRC新刊図書オープンデータ」 から、データをダウンロードして、下記の様な
コマンドラインを実行する。ファイル名は適宜日付の部分などは違ってくるであろう。
なおのこのサイトには、「この書誌情報は、営利・非営利を問わず、利用手続きなしでご自由にご利用いただけます」と記載があった(2021年6月20日(日)現在)。

```
cpanm App::colsummary # ç´„2ç§’
unzip TRCOpenBibData_20210605.zip # zipファイルを解凍
ln -s TRCOpenBibData_20210605.txt 0605.txt
colsummary -v9 -g3 -m0 0605.txt | expandtab -s30
```

3. 国民の祝日のデータを使った例

```
nkf syukujitsu.csv | tr "/," "\t\t" | sed 1d | ~/bin4tsv/*/colsummary | expandtab
```

上記↑の出力はこうなる↓

```
cpos diff ave.     range               frequent                                              frequency~lower(multi)                                       digits
1    68   1992.323 1955~2022           2019|2018|2001|2007|1996|1990                         22|20|19(4)|18(3)|17(11)|16(8)~14(7)|13(6)|12(8)|11|10|9(10) 4
2    12   6.104    1~12                5|11|1|9|4|3                                          185|151|147|138|78|74|67|60|35|30|9|1                        1~2
3    25   13.618   1~30                23|3|15|11|1|5                                        161|136|87|70|69|68(2)~10|9|8(3)|7|6(3)|5                    1~2
4    23   0.000    こどもの日~結婚の儀 休日|こどもの日|勤労感謝の日|文化の日|憲法記念日|元日 104|68(8)|67|57|56|53~27|16|7|3|2(2)|1(3)                    2~12
```

4. PCR検査実施人数の例

```
colsummary -= -i, pcr_case_daily.csv | expandtab
# -= で 1行目を列名の並びと見なし、データの値と見なさない。
# -i, により入力の区切り文字を(タブ文字ではなくて)コンマ文字(,)に変更している。
```

上記↑の出力はこうなる↓

```
cpos diff ave.      name                   range              frequent                                                      frequency~lower(multi)             digits
1    487  2020.347  日付                   2020/10/1~2021/6/9 2020/8/21|2020/7/19|2020/7/24|2020/5/10|2020/10/26|2020/11/11 1(487)                             8~10
2    85   24.988    国立感染症研究所       0|1~517            0|20|8|3|18|36                                                354|6(2)|5|3(6)|2(23)|1(52)        1~3
3    178  222.912   検疫所                 0|1~1733           0|1|13|4|11|3                                                 257|12|5(2)|4(2)|3(3)|2(22)|1(147) 1~4
4    474  3910.355  地方衛生研究所・保健所 398~11856          2425|867|4678|2502|6314|1326                                  2(13)|1(461)                       3~5
5    471  20647.676 民間検査会社           ~0|2~89005         0|37|28|3651|11|5                                             9|2(8)|1(462)                      0|1~5
6    453  1974.018  大学等                 ~0|4~6367          0|1012|4766|558|650|3924                                      14|2(21)|1(431)                    0|1~4
7    455  7567.082  医療機関               |9~35210           |430|543|1808|795|10649                                       18|2(15)|1(439)                    0|1~5
```

上記の`colsummary`の出力の例として現れたave.は数値としての平均である(数で無い入力値は0として計算する)。この出力列は `-m 0`というオプションで抑制できる。`expandtab`で半角空白文字で...

### 複数ファイルの行データの重なりを見る(venn)


4個のプロセス置換でデモ:

```
cpanm App::venn
function y(){ echo -n $* | perl -pe's/./$&\n/g' }
perldoc List::Util # qキーで終了. minstrとmaxstrを参照

README.md  view on Meta::CPAN


### クロス集計(crosstable)

```
cpanm App::crosstable
```

1. 祝日の例

```
awk -F/ 'NR>1{print $2"\t"$1}' syukujitsu.csv | crosstable | csel -p1,-43..-1 | expandtab
```

上記の出力↓ (6月は通常休日はないが、1993年にはあった。)

```
X1*X2 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022
1     2    2    2    2    4    2    2    2    2    4    2    2    2    2    2    4    2    2    2    2    2    2    2    2    2    2    3    2    2    2    2    2    3    2    2    2    2    3    2    2    2    2    2
2     1    1    1    1    1    1    1    1    1    2    2    1    1    1    1    1    2    1    1    1    1    2    1    1    1    1    1    2    1    1    1    1    1    1    1    1    1    1    2    1    3    2    2
3     1    1    2    1    1    1    1    1    2    1    1    1    1    1    1    1    1    1    1    2    1    1    1    1    1    2    1    1    1    1    2    1    1    1    1    1    2    1    1    1    1    1    1
4     1    1    1    1    2    1    1    1    1    1    2    1    1    1    1    1    1    1    1    1    1    2    1    1    1    1    1    2    1    1    1    1    2    1    1    1    1    1    2    2    1    1    1

README.md  view on Meta::CPAN

17      33      2021
18      51      2020
22      73      2019
20      93      2018
17      110     2017
```

### 全行で各文字がどの桁に何個(digitdemog)

```
digitdemog <( csel -p11 TRCOpenBibData_20210605.txt ) | expandtab
# 上記の結果は下記のようになる↓
    1   2   3    4    5    6  7  8  9
'.' 0   0   0    0    3    0  0  0  0
'0' 0   137 0    0    3    0  0  0  0
'1' 385 313 0    4    0    0  0  0  0
'2' 666 59  0    10   4    0  0  0  0
'3' 118 16  0    4    1    0  0  0  0
'4' 3   6   0    0    0    0  0  0  0
'5' 0   90  0    0    2    3  0  0  0
'6' 0   208 0    0    4    0  0  0  0

README.md  view on Meta::CPAN

'9' 0   253 0    0    3    0  0  0  0
'c' 0   0   1151 0    0    18 3  0  0
'm' 0   0   0    1151 0    0  18 3  0
'×' 0   0   21   0    0    0  0  0  0
end 80  0   0    0    1151 0  0  18 3
```

`digitdemog -L2`で具体例を抽出。

```
digitdemog -L2 <( csel -p11 TRCOpenBibData_20210605.txt ) | expandtab
# 上記の結果は下記のようになる↓
length freq minstr       maxstr
0      80   ''           <-- same
4      1151 '11cm'(2)    '43cm'(3)
7      18   '12×12cm'(2) '27×39cm'(2)
8      3    '18×8.5cm'   <-- same
```

`digitdemog -.`を使う。

```
digitdemog -. <( csel -p11 TRCOpenBibData_20210605.txt ) | expandtab
# 上記の結果は下記のようになる↓
    1   2   3     4     5     6   7   8   9
'.' 0   0   0     0     3.    0   0   0   0
'0' 0   137 0     0     3     0   0   0   0
'1' 385 313 0     4     0     0   0   0   0
'2' 666 59  0     10    4     0   0   0   0
'3' 118 16  0     4     1     0   0   0   0
'4' 3   6   0     0     0     0   0   0   0
'5' 0   90  0     0     2     3.  0   0   0
'6' 0   208 0     0     4     0   0   0   0



( run in 2.756 seconds using v1.01-cache-2.11-cpan-97f6503c9c8 )