簡體   English   中英

子集小於R中的某個值的數據幀中的所有列

[英]subset all columns in a data frame less than a certain value in R

我有一個包含7個p值變量的數據框。 我無法發布它,因為它是私有數據,但它看起來像這樣:

>df
    o           m           l           c           a           aa          ep
    1.11E-09    4.43E-05    0.000001602 4.02E-88    1.10E-43    7.31E-05    0.00022168
    8.57E-07    0.0005479   0.0001402   2.84E-44    4.97E-17    0.0008272   0.000443361
    0.00001112  0.0005479   0.0007368   1.40E-39    3.17E-16    0.0008272   0.000665041
    7.31E-05    0.0006228   0.0007368   4.59E-33    2.57E-13    0.0008272   0.000886721
    8.17E-05    0.002307    0.0008453   4.58E-18    5.14E-12    0.0008336   0.001108402

每列的值都為0-1。 我想通過提取每列中小於0.009的所有值並制作一個新的數據幀來子集整個數據幀。 如果要在這種條件下提取,則列的長度將有很大不同。 例如,c的值小於0.009,而o的值為300,a的值為500,等等。

我試過了:

subset(df,c<0.009 & a<0.009 & l<0.009 & m<0.009& aa<0.009 & o<0.009)

當我這樣做時,我最終得到的偶數列非常少,這不是我想要的,我希望每列中的所有值都適合數據中的子集條件。

然后,我想通過使用諸如summary(cut())函數之類的方法來獲取此數據框並將其歸類為p值范圍組,但是我不確定該怎么做。

因此,基本上我想擁有一個最終的數據幀,其中包含每個變量的每個p值容器中的值數量:

                o#   m# l#  c#  a#  aa# ep#
0.00-0.000001   545 58  85  78  85  45  785
0.00001-000.1   54  77  57  57  74  56  58
0.001-0.002 54  7   5   5   98  7   5   865

嘗試:

sapply(df,function(x) table(cut(x[x<0.009],c(0,0.000001,0.001,0.002,Inf))) )

#              o m l c a aa ep
#(0,1e-06]     2 0 0 5 5  0  0
#(1e-06,0.001] 3 4 5 0 0  5  4
#(0.001,0.002] 0 0 0 0 0  0  1
#(0.002,Inf]   0 1 0 0 0  0  0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM