쿵쿵 솔루션

쿵쿵 솔루션

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

관련 정보