結論
-
stack overflow の年収調査の結果をシェル芸で処理して各国の賃金水準を調査した
- アメリカが例外的に高い。ただしそれ以外の欧米諸国でも概ね1万ドル日本より高い。中国インドはやはり低い。
- サンプル数が少なく、アメリカは極端な値が多い。回答率が国に依ってかなり異なる。結果については参考程度にするのがよさそう。
各国毎の結果
金額は特に断りが無い限りアメリカドル(USD)です。
割合は全てベーシスポイント(万分率)です。
日本(Japan)
- 総回答数 : 361
- 給与解答割合 : 4736.84
- 中央値 : 52000
給与(万USD) |
割合(bp) |
0 |
467 |
1 |
467 |
2 |
818 |
3 |
1812 |
4 |
1228 |
5 |
1520 |
6 |
643 |
7 |
935 |
8 |
526 |
9 |
584 |
10 |
58 |
12 |
233 |
13 |
58 |
15over |
643 |
アメリカ(United States)
- 総回答数 : 20309
- 給与解答割合 : 6372.05
- 中央値 : 100000
給与(万USD) |
割合(bp) |
0 |
249 |
1 |
112 |
2 |
130 |
3 |
183 |
4 |
289 |
5 |
516 |
6 |
765 |
7 |
918 |
8 |
921 |
9 |
827 |
10 |
901 |
11 |
719 |
12 |
778 |
13 |
549 |
14 |
401 |
15over |
1734 |
カナダ(Canada)
- 総回答数 : 3393
- 給与解答割合 : 5844.39
- 中央値 : 64417
給与(万USD) |
割合(bp) |
1 |
161 |
2 |
332 |
3 |
690 |
4 |
1502 |
5 |
1301 |
6 |
1664 |
7 |
1099 |
8 |
968 |
9 |
474 |
10 |
413 |
11 |
171 |
12 |
211 |
13 |
70 |
14 |
75 |
15over |
549 |
英国(United Kingdom)
- 総回答数 : 6221
- 給与解答割合 : 6098.7
- 中央値 : 62507
給与(万USD) |
割合(bp) |
1 |
150 |
2 |
471 |
3 |
1009 |
4 |
1341 |
5 |
1344 |
6 |
1378 |
7 |
627 |
8 |
516 |
9 |
550 |
10 |
231 |
11 |
268 |
12 |
168 |
13 |
202 |
14 |
42 |
15over |
1431 |
ドイツ(Germany)
- 総回答数 : 6459
- 給与解答割合 : 5205.14
- 中央値 : 61194
給与(万USD) |
割合(bp) |
1 |
832 |
2 |
336 |
3 |
627 |
4 |
996 |
5 |
1287 |
6 |
1534 |
7 |
1421 |
8 |
687 |
9 |
389 |
10 |
178 |
11 |
163 |
12 |
154 |
13 |
71 |
14 |
68 |
15over |
636 |
インド(India)
- 総回答数 : 13721
- 給与解答割合 : 2981.56
- 中央値 : 9396
給与(万USD) |
割合(bp) |
0 |
5233 |
1 |
2287 |
2 |
897 |
3 |
471 |
4 |
193 |
5 |
151 |
6 |
83 |
7 |
75 |
8 |
39 |
9 |
61 |
10 |
26 |
11 |
46 |
12 |
46 |
13 |
12 |
14 |
21 |
15over |
351 |
中国(China)
- 総回答数 : 1037
- 給与解答割合 : 2603.66
- 中央値 : 26184
給与(万USD) |
割合(bp) |
0 |
1259 |
1 |
2259 |
2 |
2370 |
3 |
1555 |
4 |
962 |
5 |
555 |
6 |
333 |
7 |
296 |
8 |
148 |
9 |
37 |
10 |
37 |
11 |
37 |
15over |
148 |
コード
csvtool コマンドを利用しています。
Ubuntu なら ``apt csvtool'' でインストールできます。
以下のコードは2018年の結果だけでしか動かして居ません。
"/tmp" 以下に "data", "data2", "hoge" といった一時ファイルを作るので、
気になる人は適当に消しましょう。
データ前処理
指数表記の数値の変換、国名の書き換え、データの正規化などを行っています。
csvtool col 4,55 survey_results_public.csv |
sed -e '1d' \
-e 's/e+05/00000/' -e 's/e+06/000000/' \
-e 's/"Congo, Republic of the..."/Congo/' \
-e 's/Democratic Republic of the Congo/Congo/' \
-e 's/"Iran, Islamic Republic of..."/Iran/' \
-e 's/"Micronesia, Federated States of..."/Micronesia/' \
-e 's/"Venezuela, Bolivarian Republic of..."/Venezuela/' \
-e 's/ /_/g' \
-e 's/,/ /' |
sort -k2n |
tee /tmp/data
国ごとデータ作成
function munging() {
country=$(echo $1 | sed 's/ /_/g')
awk -v c="$country" '$1==c&&$2!="NA"{ print $2 }' /tmp/data
}
分布出力
function count() {
file=$1
awk '{ print int($1/10000) }' $file |
uniq -c |
awk '{ printf("%5d %5d\n", $2, $1) }'
}
万分率分布出力
function count_bp() {
file=$1
nr="$(wc -l $file | cut -d' ' -f1)"
awk '{ print int($1/10000) }' $file |
uniq -c |
awk '{ printf("%5d %5d\n", $2, ($1 * 10000)/'$nr') }'
}
15万ドル以上まとめ込み万分率分布出力
function count_bp_fold() {
file=$1
nr="$(wc -l $file | cut -d' ' -f1)"
awk '{ print int($1/10000) }' $file |
awk '$1>=15{ $1="15over" }{ print $1 }' |
uniq -c |
awk '{ printf("%8s %5d\n", $2, ($1 * 10000)/'$nr') }'
}
中央値
function median() {
file=$1
nr="$(wc -l $file | cut -d' ' -f1)"
awk 'NR==int('$nr'/2){ print NR, $0 }' $file
}
各国解答数/割合情報作成
awk '{ print $1, ($2!="NA") }' /tmp/data |
sort |
uniq -c |
awk '{ print $2, $3, $1 }' |
awk -v count=0 -v key="" '
key==$1{$1=" "
printf("%s", $0);
next; }
{ printf("\n");
printf("%s",$0);
key=$1 }
END{ printf("\n") }' |
sed '1d' |
awk '
$2==0&&$4==1{ print $1, $3, $5; next; }
$2==0&&$4==""{ print $1, $3, 0; next; }
$2==1&&$4==""{ print $1, 0, $3; next; }
{ print("ERROR unreachable"); exit(1); }' |
awk '{ print $1, $2+$3, ($3*10000)/($2+$3) }' > /tmp/data2
使用例
munging Japan > /tmp/hoge
median /tmp/hoge
count_bp_fold /tmp/hoge
grep Japan /tmp/data2