看板 Linux 關於我們 聯絡資訊
我現在正在處理一些有關於生物資訊的資料 基本上的資料格式長這樣 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 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.230.107.147 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1530019613.A.AE6.html
Kouni: 看需求好像是針對行去做判斷, awk 應該可以做到. 類似這樣: 06/26 22:12
Kouni: awk '{if ($2 == $3){print $0}}' 06/26 22:13
Kouni: 可以判斷兩值關係, 但如果要弄成較友善的資料格式還是建議 06/26 22:14
Kouni: 使用其他程式語言會比較快XD 06/26 22:15
kenduest: 這個用 python 搭配 pandas 處理會很快,學點其他語言 06/26 22:26
k97231: 不過現在我還只是linux新手 其他的程式語言只有R 06/27 10:31
a1u1usul3: linux的幾個程式只是堪用,不是很好用。字串處理還是用 06/27 11:00
a1u1usul3: 別的語言做會方便、好做很多,也比較查得到資料 06/27 11:00
k97231: 剛剛試用了一下pandas 可以依據欄位名擷取資料 06/27 17:39
k97231: 但要如何邏輯判斷並令存檔案就是另一個問題 06/28 11:03
kenduest: 請看官方的文件,data frame 是很單純事情 06/28 11:35