資料的截取與邏輯判斷 - Linux

Table of Contents

我現在正在處理一些有關於生物資訊的資料

基本上的資料格式長這樣
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的管線順序還沒參透)
但要如何依據相同字母擷取特定行就不清楚了
想問有甚麼指令可以針對首列帶有特定字串的行進行擷取?

--
Sent from my Windows

--

All Comments

Gary avatarGary2018-06-29
看需求好像是針對行去做判斷, awk 應該可以做到. 類似這樣:
Anthony avatarAnthony2018-07-01
awk '{if ($2 == $3){print $0}}'
Hamiltion avatarHamiltion2018-07-02
可以判斷兩值關係, 但如果要弄成較友善的資料格式還是建議
Olive avatarOlive2018-07-04
使用其他程式語言會比較快XD
Leila avatarLeila2018-07-05
這個用 python 搭配 pandas 處理會很快,學點其他語言
Heather avatarHeather2018-07-07
不過現在我還只是linux新手 其他的程式語言只有R
Lucy avatarLucy2018-07-10
linux的幾個程式只是堪用,不是很好用。字串處理還是用
別的語言做會方便、好做很多,也比較查得到資料
Audriana avatarAudriana2018-07-12
剛剛試用了一下pandas 可以依據欄位名擷取資料
Anonymous avatarAnonymous2018-07-16
但要如何邏輯判斷並令存檔案就是另一個問題
Charlie avatarCharlie2018-07-19
請看官方的文件,data frame 是很單純事情