2013-09-14 3 views
3

Я хочу подсчитать количество положительных и отрицательных значений в одном из столбцов блока данных. Как я буду делать в R?подсчитывает количество положительных и отрицательных чисел в df

Например, вот кадр данных, например

   logFC logCPM  LR  PValue   FDR 
Bra15066 -5.630822 5.184586 73.79927 8.647868e-18 4.060866e-13 
Bra18809 -13.227825 7.158572 72.13478 2.009902e-17 4.719048e-13 
Bra45310 5.848073 5.244367 65.61483 5.482472e-16 8.581530e-12 
Bra44666 -4.270590 4.852193 63.75671 1.407731e-15 1.652605e-11 
Bra34292 -12.917379 4.198073 61.84715 3.711794e-15 3.485968e-11 
Bra38258 -5.239433 4.816886 57.98476 2.641567e-14 2.067378e-10 

Теперь я хотел бы подсчитать количество положительных значений в столбце logFC по сравнению с отрицательными значениями.

В принципе, я хотел бы видеть 5 отсчетов для отрицательных чисел и 1 для положительного числа для вышеуказанного df. Как мне сделать в R?

+2

Можете ли вы показать нам, что вы пробовали до сих пор, и объяснить, как он не работает? – joran

ответ

17

Вот еще более простое решение:

table(sign(mydf$logFC)) 

Количество -1 и 1 результатов ваши отрицательные и положительные значения, соответственно.

+0

Вот расширение для всех столбцов: 'do.call (rbind, lapply (sign (dat), function (x) table (factor (x, levels = c (-1,0,1)))))' Там должен быть более простым способом ...? – Frank

+1

@Frank, но не много улучшения, но: 'sapply (sign (mydf), function (x) table (factor (x, levels = c (-1,0,1))))' – A5C1D2H2I1M1N2O1R2T1

+1

@Frank, или , лучше, с «длинной» структурой? 'x <- stack (mydf); x $ sign <- знак (значения x $); table (x [-1]) ' – A5C1D2H2I1M1N2O1R2T1

2
pos<-nrow(df[df$logFC>0,]) 
neg<-nrow(df[df$logFC<0,]) 

ДФ является dataframe и поз и нег есть число положительных и отрицательных записей в logFC

+0

Незначительная опечатка в коде. Это должно быть «logFC», а не «LogFC». Иначе это сработало. Спасибо – upendra

2

count Использование из пакета plyr:

library(plyr) 
with(mydata,count(sign(logFC))) 
Смежные вопросы