質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

671閲覧

重複した番号の中から、同じ番号ごとにカウントして数を数える

yourhouse778

総合スコア13

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/05/15 05:14

編集2019/05/15 05:26

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
a[0]= 1 1 1 1 1 2 2 2 2 ・・・・22 22 22 X X X ・・Y Y Y・・MT MT MTとします。
ここから、同じ番号ごとに何個あるかをカウントしたいです。また、数字だけではなく、文字も含まれているのでどうすれば良いか困っています。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

import sys
import os

with open('test.vcf','r') as file:
lines = file.read().split('\n')
for line in lines:
a = line.split('\t')
CHR = a[0]

python

試したこと

文字(XやYやMT)を別の数字に置き換えようとしましたが、エラーでname 'X' is not
defined となりました。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mather

2019/05/15 05:22

a[0] == "1" ではありませんか? できれば test.vcf ファイルの内容も提示してください。
yourhouse778

2019/05/15 05:34 編集

申し訳ありません。ファイルを貼り付けることは諸事情によってできません。 ざっくり書くと以下のような感じです。 ##~~~~~~ ##~~~~~~ # CHROM POS ID ・・・・   1  123   1  456   2  789   ・   ・   X 1234
mather

2019/05/15 05:35

データはサンプルで構わないんですが、具体的にどんなデータを分解して集計しようとしているのかが見えないので具体例が欲しかったです。
yourhouse778

2019/05/15 05:38

すみませんでした。。上記でわかりますか?
guest

回答2

0

要するにtsv形式のファイルの一種であるvcfファイルの第1桁に注目して行数を数え上げればいいわけですね。pythonでもいいですが、最短の解はawkを使ったシェルスクリプトでしょう。

awk '/^#/{next} {n[$1]++} END{for(i in n){print i,n[i]}}' test.vcf|sort

投稿2019/05/15 07:01

KojiDoi

総合スコア13671

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

とりあえずリストに変換できれば、collections.Counterを使って簡単に数え上げが可能です。

https://docs.python.org/ja/3/library/collections.html#collections.Counter

python

1>>> from collections import Counter 2>>> lst = [1,1,2,3,4,4,4,5,5,6] 3>>> c = Counter(lst) 4>>> c 5Counter({4: 3, 1: 2, 5: 2, 2: 1, 3: 1, 6: 1}) 6>>> c[1] 72

投稿2019/05/15 05:29

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yourhouse778

2019/05/15 06:04

リストへの変換の仕方がわかりません。。
hayataka2049

2019/05/15 06:10 編集

データそのもののテキストがないと、こちらとしてもどう変換していいのかはわかりません。 質問の編集機能を使って、test.vcfをテキストエディタで開いた結果を「コードブロックの中に」貼り付けて掲載してください。量が多いようであれば、フォーマットが分かる程度の行数(10行くらい)で構いません。 あと、pythonコードもコードブロックに入れましょう。 ```python ここにコードを書く ``` とするだけなので簡単です。 (途中の改行は必須。また、最後の```のあとにもテキストを続けるのなら、そこにも改行が必須)
hayataka2049

2019/05/15 06:11

編集依頼欄をよく見ていませんでした。ファイルそのものを貼り付けられない事情があるのですね。そうなると、pythonの基本的な文字列操作などを学んだ上で試行錯誤していただくしかないと思います。 標準のcsvモジュール、pandasのようなライブラリを活用してもいいでしょう。
yourhouse778

2019/05/15 06:37

すみませんでした。。自分なりに試行錯誤してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問