[問題] 資料的截取與邏輯判斷

作者: k97231 (AL)   2018-06-26 21:26:50
我現在正在處理一些有關於生物資訊的資料
基本上的資料格式長這樣
ID A_1 A_2 B_1 B_2 ……
1 0/0 0/0
2 0/0 ./.
3 ./. ./.
4. 0/0 0/1
5. 1/1 0/1
6. 0/1 0/1
……
接著我想要做幾件事情
依據相同字母的樣本(像是A_1和A_2)
逐列統計四種欄位的數量
1. A_1和A_2相同
2. A_1和A_2都一樣是./.
3. A_1和A_2不一樣
4. 以及任一樣本含有./.的欄位數量
以上表為例
A_1和A_2相同的數量是3 (ID1, 3, 6)
兩行數值都是./.的數量是1
A_1和A_2不同的列有3 (ID2, 4, 5)
有任一行數值為./.的數量為2 (ID2, 3)
然後統計成四個數值這樣並輸出
不過有問題的部分是要如何擷取含有特定字串的兩欄
並逐行進行邏輯判斷?
我知道可以利用awk逐行進行擷取並用grep計算數量並輸出 (不過awk和grep的管線順序還沒參透)
但要如何依據相同字母擷取特定行就不清楚了
想問有甚麼指令可以針對首列帶有特定字串的行進行擷取?
作者: Kouni (newbie)   2018-06-26 22:12:00
看需求好像是針對行去做判斷, awk 應該可以做到. 類似這樣:awk '{if ($2 == $3){print $0}}'可以判斷兩值關係, 但如果要弄成較友善的資料格式還是建議使用其他程式語言會比較快XD
作者: kenduest (小州)   2018-06-26 22:26:00
這個用 python 搭配 pandas 處理會很快,學點其他語言
作者: k97231 (AL)   2018-06-27 10:31:00
不過現在我還只是linux新手 其他的程式語言只有R
作者: a1u1usul3 (Q-Max)   2018-06-27 11:00:00
linux的幾個程式只是堪用,不是很好用。字串處理還是用別的語言做會方便、好做很多,也比較查得到資料
作者: k97231 (AL)   2018-06-27 17:39:00
剛剛試用了一下pandas 可以依據欄位名擷取資料
作者: kenduest (小州)   2018-06-28 11:35:00
請看官方的文件,data frame 是很單純事情

Links booklink

Contact Us: admin [ a t ] ucptt.com