カンクンソリューション

カンクンソリューション

私は植物特性と植物種のマトリックスを作ろうとしています。データには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

関連情報