2016-09-16 2 views
0

У меня есть dataframe, который выглядит как:Число столбцов больше 0 для данной строки?

col1 col2 col3 
0  0  .4 
.3 1  0 
0  0  .8 

Я хотел бы создать новый столбец, который подсчитывает количество значений столбца больше, чем 0 в остальных трех строк:

col1 col2 col3 col4 
0  0  .4 1 
.3 1  0  2 
0  0  .8 1 

ответ

2

You просто нужно использовать apply функцию:

## Example Data 
dd = data.frame(col1 = c(0, .3, 0), col2=c(0, 1, 0), 
         col3=c(0.4, 0, 0.8)) 
apply(dd, 1, function(i) sum(i > 0)) 

Так добавить это тоже существующий фрейм данных:

dd$col4 = apply(dd, 1, function(i) sum(i > 0)) 

В качестве альтернативы можно преобразовать кадр данных логических значений затем использовать rowSums

rowSums(dd > 0) 
0

Другим вариантом является Reduce с + после цикла по столбцам, чтобы создать list логических vector s

dd$col4 <- Reduce(`+`, lapply(dd, `>`, 0)) 
dd 
# col1 col2 col3 col4 
#1 0.0 0 0.4 1 
#2 0.3 1 0.0 2 
#3 0.0 0 0.8 1 
Смежные вопросы