как суммировать двоичные результаты в r - PullRequest
0 голосов
/ 07 мая 2020

Я новичок в R и все еще учусь. У меня есть такой набор данных

county chemicalA chemicalB chemicalC chemicalD
A           1       0          1         0
B           0       0          0         0
C           1       0          0         0
D           0       1          1         0

Я генерирую эти двоичные переменные с помощью кода:

chemicalA=ifelse(Mean.Value_chemicalA>0,1,0)
chemicalA[is.na(chemicalA)]=0

Теперь я хотел бы суммировать «1» и посмотреть, сколько химикатов обнаружен в одном месте. Мой идеальный результат такой:

county chemicalA chemicalB chemicalC chemicalD   detection
A           1       0          1         0           2
B           0       0          0         0           0
C           1       0          0         0           1
D           0       1          1         1           3

Я пробовал

data$detection=chemicalA+chemicalB+chemicalC+chemicalD

Но результат только 2 и 0, и я не знаю почему. Сначала я подумал, что ChemicalX может не быть числовым c данными, и использовал class(). Все переменные chemicalX возвращаются как numeric.

Кто-нибудь может мне с этим помочь? Спасибо!

Ответы [ 2 ]

0 голосов
/ 07 мая 2020

Я думаю, что rowSums работает лучше, когда имя строки начинается с того же префикса. Но если нет, мы можем попробовать apply.

data$detection=apply(data[,c(1:5)], 1, sum)
0 голосов
/ 07 мая 2020

Мы можем использовать rowSums в именах столбцов, которые startsWith префикс «химический»

data$detection <- rowSums(data[startsWith(names(data), "chemical")])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...