Количество или количество столбцов, удовлетворяющих некоторым критериям - PullRequest
1 голос
/ 04 октября 2019

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

Например, при использовании mtcars условия могут быть следующими: "disp" > 150, "hp < 100", "wt" > 2.65

Глядя на верхние три строки - Mazda RX4, Mazda RX4 Wag, Datsun 710 - новый столбецmtcars$metcri должно быть 1, 2 и 1 соответственно.

Я просмотрел ряд других статей и в основном сосредоточился на поднаборах, подсчитывая общее количество строк, соответствующих критерию , или используя один критерий для всех столбцовконцерна . Я видел что-то с использованием операторов if_else , но это не сработало и дало 52 для нового столбца. На случай, если я что-то пропустил, вот код для этого:

mtcars$metcri <- sum(if_else(mtcars$disp > 150, 1, 0, missing = NULL), 
                      if_else(mtcars$hp < 100, 1, 0, missing = NULL), 
                      if_else(mtcars$wt > 2.65, 1, 0, missing = NULL))

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

3 голосов
/ 04 октября 2019

Вы можете добавить три логических условия напрямую

mtcars$metcri <- (mtcars$disp > 150)  +  (mtcars$hp < 100) + (mtcars$wt > 2.5)
0 голосов
/ 04 октября 2019

Мы можем использовать with

mtcars$metcri <- with(mtcars, disp > 150 + hp < 100 + wt > 2.5)

Или используя data.table

library(data.table)
as.data.table(mtcars)[, metcri := (disp > 150) + (hp < 100) + (wt > 2.5)]
...