0

私は非常に具体的にセクション化されたデータセットを持っていますが、次のようにかなり不便です:

data <- textConnection("rs1050,15,234323,C,T
1,7329,0.1147,-0.0024,0.0048
1,9810,0.6399,0.001174,0.006095
1,16550,0.648541108,0.0061,0.0070
rs7895,NA,NA,A,C
1,997,NA,NA,0.0732
1,9810,0.0339,-0.016131,0.021611
1,16550,0.32739678,0.0014,0.0053
rs995,18,100336,C,T
1,7385,0.2692,-0.0063,0.0035
1,9810,0.5397,-0.002697,0.006012
1,16550,0.651147483,-0.0045,0.0053")
test_data <- read.csv(data, header = FALSE, sep = ",")

rs####インクルードを含む行がNA(1つまたは複数の列に)含まれている場合は、それらを削除する必要があります。これ自体は問題ありませんが、この場合、この行の下の3行も削除する必要があります(これらの行にすべてのデータが存在するかどうかは関係ありません)。

したがって、上記のデータの場合、5〜8行目はすべて削除されます。

どんな解決策も素晴らしいでしょうが、これまでの私の努力はsedに基づいていました。このようなもの?

sed -i '/rs*\t*\tNA\tNA\t*/~1-3d' test_data

sed -i '/rs*\t*\tNA\tNA\t*/,+3d' test_data

私は近くにいるような気がします、どんな考えでもありがたいです!

4

3 に答える 3

1

実際のデータにトレーニングがない限り、これで問題ありませ")ん...

sed  '/^rs.*NA/,+3d' test_data 
于 2013-01-30T20:42:47.297 に答える
0

を使用する必須の代替手段awk:

awk '/^rs.*NA/ { output = 0; } /^rs/ && !/NA/ { output = 1; } output { print }'

おそらくもう少し最適化されている可能性がありますが、読者のためのことわざがあります...

これには 3 つの部分があります。行が で始まり、rsが含まれている場合、変数NAはオフになります。output行が で始まり、rs含まれていない場合はNAoutputオンに戻ります。次に、outputが現在オンになっている場合、rsまたはが含まれているかどうかに関係なく、その行を出力しますNA

于 2013-01-30T21:12:31.373 に答える
0
sed '/^rs[0-9]+\tNA\tNA\t/,+3d' <input_data >output_data
于 2013-01-30T21:04:13.557 に答える