回答編集履歴

3

Update

2022/05/08 04:00

投稿

melian
melian

スコア20655

test CHANGED
@@ -1,17 +1,35 @@
1
+ Perl ではなく、GNU awk を利用する場合。
2
+ ```bash
3
+ $ gawk --version
1
- > 分割属性(天気など), と対応する属性値(晴など), ゴルフプレイ(○, ×)の頻度を求めるプログラムを作成したいです
4
+ GNU Awk 5.1.0, API: 3.0 (GNU MPFR 4.1.0, GNU MP 6.2.1)
2
5
 
6
+ $ gawk '
3
- > Ubuntu-20.04を利用しています
7
+ NR==1{split($0, cols); next}
8
+ {for(i=1;i<length(cols);i++) tbl[cols[i] " -> " $i " -> " $5]++}
9
+ END{
10
+ PROCINFO["sorted_in"] = "@ind_str_asc"
11
+ for(i in tbl) print i " = " tbl[i]
12
+ }
13
+ ' test.tsv
4
14
 
15
+ 天気 -> 晴 -> × = 3
16
+ 天気 -> 晴 -> ○ = 2
17
+ 天気 -> 曇 -> ○ = 4
18
+ 天気 -> 雨 -> × = 2
19
+ 天気 -> 雨 -> ○ = 3
20
+ 温度 -> 暑 -> × = 2
21
+ 温度 -> 暑 -> ○ = 2
22
+ 温度 -> 暖 -> × = 2
23
+ 温度 -> 暖 -> ○ = 4
24
+ 温度 -> 涼 -> × = 1
25
+ 温度 -> 涼 -> ○ = 3
5
- Perl を使うことが必要条件でなければ、[datamash](https://www.gnu.org/software/datamash/)を利用する方法もあります。
26
+ 湿度 -> 普通 -> × = 1
27
+ 湿度 -> 普通 -> ○ = 6
28
+ 湿度 -> 高 -> × = 4
29
+ 湿度 -> 高 -> ○ = 3
30
+ 風 -> 有 -> × = 3
31
+ 風 -> 有 -> ○ = 3
32
+ 風 -> 無 -> × = 2
33
+ 風 -> 無 -> ○ = 6
6
- ```bash
34
+ ```
7
- $ sudo apt install datamash
8
35
 
9
- $ datamash --header-in --header-out --sort unique 1-5 < test.tsv | column -t
10
- unique(天気) unique(温度) unique(湿度) unique(風) unique(ゴルフプレイ)
11
- 晴,曇,雨 暑,暖,涼 普通,高 有,無 ×,○
12
-
13
- $ datamash --header-in --header-out --sort -g5 count 5 < test.tsv | column -t
14
- GroupBy(ゴルフプレイ) count(ゴルフプレイ)
15
- × 5
16
- ○ 9
17
- ```

2

Update

2022/05/07 09:49

投稿

melian
melian

スコア20655

test CHANGED
@@ -6,9 +6,9 @@
6
6
  ```bash
7
7
  $ sudo apt install datamash
8
8
 
9
- $ datamash --header-in --header-out --sort unique 1-4 < test.tsv | column -t
9
+ $ datamash --header-in --header-out --sort unique 1-5 < test.tsv | column -t
10
- unique(天気) unique(温度) unique(湿度) unique(風)
10
+ unique(天気) unique(温度) unique(湿度) unique(風) unique(ゴルフプレイ)
11
- 晴,曇,雨 暑,暖,涼 普通,高 有,無
11
+ 晴,曇,雨 暑,暖,涼 普通,高 有,無 ×,○
12
12
 
13
13
  $ datamash --header-in --header-out --sort -g5 count 5 < test.tsv | column -t
14
14
  GroupBy(ゴルフプレイ) count(ゴルフプレイ)

1

Update

2022/05/07 09:44

投稿

melian
melian

スコア20655

test CHANGED
@@ -1,4 +1,6 @@
1
1
  > 分割属性(天気など), と対応する属性値(晴など), ゴルフプレイ(○, ×)の頻度を求めるプログラムを作成したいです
2
+
3
+ > Ubuntu-20.04を利用しています
2
4
 
3
5
  Perl を使うことが必要条件でなければ、[datamash](https://www.gnu.org/software/datamash/)を利用する方法もあります。
4
6
  ```bash