2013-12-06 2 views
0

У меня есть dataframe, который содержит 7 переменных p-value. я не могу отправить его, потому что это личные данные, но это выглядит следующим образом:Подмножество всех столбцов в кадре данных меньше определенного значения в R

>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 и создавая новый фрейм данных. Если бы я должен был извлечь из этого условия, столбцы имели бы очень разную длину. Например. с 290 значений меньше, чем 0,009, и о имеет 300, аа имеет 500 и т.д.

Я пробовал:

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

Когда я делаю это я просто в конечном итоге с очень небольшим числом четных столбцов который не то, что я хочу, я хочу, чтобы все значения в каждом столбце соответствовали критериям подмножества в данных.

Затем я хочу взять этот фрейм данных и поместить его в группы диапазона значений p, используя что-то вроде функции summary(cut()), но я не уверен, как это сделать.

Так по существу Я хотел бы иметь конечный кадр данных, который включает в себя количество значений в каждом р-значение бункера для каждой переменной:

   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 

ответ

3

Попытка:

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