순서대로 디렉터리의 여러 파일을 연결합니다. NA는 허용됩니다.

순서대로 디렉터리의 여러 파일을 연결합니다. NA는 허용됩니다.

6개의 파일이 여러 개 있는데, 각 파일에는 이름이 포함된 열이 1개만 있습니다. 이 모든 파일을 읽고 다음과 같이 하나의 파일로 병합하고 싶습니다.

file1  file2  file3  file4  file5  file6  Count
adam   adam   adam   adam   adam   adam   1
Roy    NA     Roy    Roy    NA     NA     0.5
NA     Sam    Sam    NA     NA     NA     0.33

adam이는 모든 파일에 Roy3개의 파일(file1,3,4)과 Sam2개의 파일(file2,3)에 해당 이름이 존재함을 나타냅니다 . 마지막 열은 추가되며 모든 파일을 병합한 후 계산됩니다. 모든 파일에 나타나는 이름의 비율을 제공합니다. 예를 들어 Roy의 경우 파일 6개 중 3개에서 관찰 Count되므로3/6 = 0.5

결과 데이터프레임은 colnames실제 파일 이름을 나타내야 합니다. 내가 읽고 있는 파일의 이름이 등이라고 가정해 file1.txt보겠습니다 file2.txt.

어떤 도움이라도 대단히 감사하겠습니다. 감사해요.

답변1

Python 스크립트를 작성하여 각 파일을 읽고 이름을 키로 포함하고 이름 수를 값으로 계산하는 사전을 만들 수 있습니다. 마지막으로 각 값을 파일 수로 나눌 수 있습니다.

이 같은:

#!/usr/bin/env python  

filelist= ['file1.txt', 'file2.txt', 'file3.txt', 'file4.txt']
dictionary= dict()

for file in filelist:
    fd= open(file, "r")

    for name in fd.readlines():
        name= name.strip()
        if name in dictionary.keys():
            dictionary[name]+= 1
        else:
            dictionary[name]= 1
        fd.close()

for x in dictionary.keys():
    print("{0} : {1}".format(x, float(dictionary[x])/len(filelist)))

편집하다:
Linux에서는 Python이 기본적으로 사용됩니다. 복사해서 파일에 붙여넣고 실행하시면 됩니다. 작동 중이야

답변2

주어진 입력에 대해 모든 파일의 행과 확장자가 동일한 것처럼 보이며 열에 파이프하기만 하면 됩니다.

$ paste *.txt | column -t

편집하다:

NA가 "빈 셀"인 경우 다음 명령을 사용하십시오.

$ paste *.txt |  column -s $'\t'  -tn

이는 파일의 줄 번호가 다른 경우에도 작동합니다.

관련 정보