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
이는 모든 파일에 Roy
3개의 파일(file1,3,4)과 Sam
2개의 파일(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
이는 파일의 줄 번호가 다른 경우에도 작동합니다.