私は植物特性と植物種のマトリックスを作ろうとしています。データには2,912,746行と3列があります。各種ごとに特性の数が異なり、すべての種がすべての特性を持っているわけではありません。データ型はタブで区切られます。
現在の形式 -
Species Trait Value
Species_1 SLA 4
Species_1 Photopath C3
Species_1 Mycorrhiza AMF
Species_2 SLA 3
Species_2 Growth 10
必須形式--
SLA Photopath Mycorrhiza Growth
Species_1 4 C3 AMF
Species_2 3 10
これにご協力いただきありがとうございます。これは非常に難しいことで、どこから始めるべきかわかりません。
ありがとうございます! ! ! !
〜マークアントニー
答え1
text/plain
まず、作成したとおりにすべてのデータをファイルに保存することをお勧めします。すべてのデータはtab delimited
。
その後、フィルタ列の使用方法を試すことができます。cut
はい
#get first column of a tab delimited file
> cut -f 1 -d $'\t' file
その後、データベースエンジン(例)mysql-server
とワークベンチ(例)をインストールすることをお勧めしますmysql-workbench
。
必要に応じて、現在および将来に必要なすべてのデータを簡単に挿入、インポート、および分析するのに役立ついくつかの挿入機能を備えたインデックス付きデータベースを構築するのに役立ちます。
その他のオプション
text/plain
ファイル拡張子をに変更して.csv
使用してくださいLibreOffice Calc
。ファイルを開いたら、タブを区切り文字として選択します。プロファイリングデータを使用できますが、pivot tables
目的の出力を取得する方法がわかりません。
カンクンソリューション
まず、使用する新しいディレクトリを作成しましょう。
> mkdir test
次に、ソースファイルをこの新しいディレクトリにコピーします。
> cp source test/file
その後、ディレクトリを入力します
> cd test
次に、ファイルの最初の行(列名の行)を削除します。
> nano file
press ctrl+k, ctrl+x and y
次に、ファイルをソートします。
> sort file > file.sort
すべての列名を取得
> cut -f 2 -d $'\t' file > cols
列のディレクトリの作成
> mkdir c
すべてのデータを列に分割(エラーを無視)
> while read i ; do grep "$i" file | cut -f 1,3 -d $'\t' > "c/$i" ; done < cols
すべてのデータを結合し、重複エントリを削除します。
> cut -f 1 -d $'\t' file.sort > result
> for f in c/* ; do join result "$f" > tmp ; join -v 1 result "$f" | sed -e 's/$/ -/g' >> tmp ; sort tmp > result ; done
> uniq result