私は44列と60000行のデータフレームを持っています。それらの行が最大75%の列を持つ場合、それらの行を削除したいと考えました。この75%:例えば私のケースでは、44列33列。そして私は、それは完全に私が尋ねたそれらの列を探している列の値の75%が0に等しい場合、データフレームから行を削除する方法
filter <- apply(df, 1,function(x) any(x[1:33]!=0) && any(x[34:44]!=0))
df = df[filter,]
、としてR で、次の機能を試してみました。しかし、問題は私のデータフレームは、このような値を持つ多くの行を持っている、特定の行の代替モデル、すなわち、1つの列の数値と0のようにゼロがあります。これは時には33列以上であり、上記の関数はこれらの行を避けます。
は、これまでのところ私はすべての値がここでパンダ
df[(df != 0).all(1)]
にゼロに等しくないとき、私はパンダに試すことができます任意のソリューションもまた素晴らしい..私が知っていることだろうされ、Rで試してみましたどのように私です
dim(df)
[1] 57905 44
head(df)
ID Pe_1 Pe_2 Pe_3 Pe_4 Pe_5 Pe_6 Pe_7 Pe_8 Pe_9 Pe_10 Pe_11 Pe_12 Pe_13 Pe_14 Pe_15 Pe_16 Pe_17 Pe_18 Pe_19 Pe_20 Pe_21 Pe_22 Pe_23 Pe_24 Pe_25 Pe_26 Pe_27 Pe_28 Pe_29 Pe_30 Pe_31 Pe_32 Pe_33 Pe_34 Pe_35 Pe_36 Pe_37 Pe_38 Pe_39 Pe_40 Pe_41 Pe_42 Pe_43 Pe_44
ENSG1 0 0 1 0 0 2 2 1 0 0 0 1 0 3 3 0 1 0 2 0 2 3 1 2 0 2 0 0 0 0 0 2 0 0 0 0 2 0 0 2 0 3 1 3
ENSG2 274 293 300 273 229 124 427 291 274 561 128 506 342 540 376 422 411 190 723 224 303 316 766 697 251 167 271 361 325 133 215 274 217 366 227 579 337 254 570 188 143 363 250 359
ENSG3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ENSG4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ENSG5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ENSG6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ENSG7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ENSG8 0 1 0 1 1 1 0 2 0 0 0 1 1 1 0 1 0 0 0 0 0 1 1 1 2 1 0 3 0 1 1 2 0 0 0 0 0 0 1 1 0 0 1 1
ENSG9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ENSG10 3 2 4 6 21 6 6 13 3 1 1 6 10 4 2 0 1 0 0 0 4 2 5 3 25 9 7 10 7 5 3 0 0 5 1 8 4 5 0 4 1 3 2 4
ENSG11 277 43 79 216 1170 174 213 1303 564 14 53 76 170 1016 32 19 69 69 50 21 75 31 560 86 2668 604 513 303 1378 109 219 172 10 1031 276 242 1587 217 76 43 450 81 502 99
どれsuggetsions /ヘルプは
データを削除することができますか?クリーンアップリストで
(ゼロを除く)、そのリストをクリーンアップする必要がありますか次に、この関数 'isna()'があります。これは基本的にあなたがそれらの行を削除するのを助けることができます。 –
NAsまたは0で削除する必要はありませんが、これらの行を削除またはフィルタリングします。列の値の75%が0の場合 – user1017373
Rの場合、これはほぼhttp://stackoverflow.com/questions/37879467/と重複しています。 –