2016-03-07 2 views
0

У меня есть несколько таблиц данных, которые состоят из нескольких столбцов и многих тысяч строк. Мои данные выглядит примерно так:Как сгенерировать количество положительных значений по столбцу в data.table

iteration V1 V2 V3 V4 
1   -2 3 -4 1 
2   -2 3 -3 4 
3   -2 3 7 -8 
4   -2 3 -4 2 
5   -2 3 -4 -3 

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

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

Я могу сделать это, объединив кучу следующих утверждений, но должен быть лучший способ - любой совет для усталого ума?

nrow(dat[v2>=0]) 
+2

'colSums (Дат> 0)' – alistaire

+2

Если у вас действительно есть 'data.table', может быть' Дат [, lapply (.sd, функция (х) сумма (х > 0))] будет более эффективным (избегает преобразования матрицы) –

+2

@DavidArenburg - хотя добавление столбца 'iteration' кажется немного нечетным - возможно,' dat [, lapply (.SD, function (x) sum (x> 0)), .SDcols = -1] ' – thelatemail

ответ

0

Предполагая, что ваш dataframe называется df:

df <- data.frame('V1'=c(-2, -2, -2, -2, -2), 'V2'=c(3, 3, 3, 3, 3), 'V3'=c(-4, -3, 7, -4, -4), 'V4'=c(1, 4, -8, 2, -3)) 

вы могли бы начать с определения количества строк, как:

nRows <- dim(df)[1] 

Тогда можно определить вспомогательную функцию как таковую:

calcStats <- function(x) { 
    pos <- sum(df[, x] > 0) 
    c("number of positives" = pos, "proportion of positives" = pos/nRows) 
    } 

и получить результат с:

result <- as.data.frame(Map(calcStats, colnames(df))) 

         V1 V2 V3 V4 
number of positives  0 5 1.0 3.0 
proportion of positives 0 1 0.2 0.6 
+0

Что значит, это не работает? Пожалуйста, выполните его по строкам. Он работает для меня и дает ожидаемый результат .... – ranlot

+0

Я действительно не понимаю все downvotes .... Может кто-то объяснить, почему мой ответ отклонен? – ranlot

+1

Я не спустил вниз вас, но начинал с начала, ОП спросил о data.table – Heroka

Смежные вопросы