저는 식물 특성과 식물 종의 매트릭스를 만들려고 노력하고 있습니다. 데이터에는 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