R: добавление значений в [row, column], только если значение равно true в двух строках в одном и том же столбце - PullRequest
0 голосов
/ 13 мая 2018

Я пытаюсь кодировать следующее

У меня 240 строк и 11 столбцов. Я хочу сделать следующее: Если значение в (строка 1, столбец 1) было больше 0, а если значение в (строка 1, столбец 2) было больше 0, подсчитайте значение в (строка 1, столбец 4).

Для примера: (строка, столбец)

Если (1,1) = (1) И если (1,2) = (1), то считать значение в (1,4)

Если (2,1) = (1) И если (2,2) = (0), НЕ СЧИТАЙТЕ значение в (2,4)

Если (3,1) = (0) И если (3,2) = (1), НЕ СЧИТАЙТЕ значение в (3,4)

и т.д ...

Я уже видел довольно похожий пост, однако вместо 2 было дано только 1 условие.

Я попробовал следующее решение, которое не сработало сумма (DataFrame_a [DataFrame_a [, 1]> 0, DataFrame_a [, 2]> 0, 4])

Заранее благодарю за помощь.

Ответы [ 3 ]

0 голосов
/ 13 мая 2018

Я согласен с Питером Ханом;оператор ifelse должен помочь.

Использование dplyr более элегантно.Для полноты, вот пример в базе:

x <- data.frame("X1" = 1:5, "X2" = c(0,1,0,1,1), "X3" = 10:14)
y <- NULL

y <- ifelse(x$X1 > 0 & x$X2 > 0, x$X3,0)

> y
[1]  0 11  0 13 14

> sum(y)
[1] 38
0 голосов
/ 13 мая 2018

Спасибо вам обоим за помощь.Это работает сейчас.

Я сделал следующее:

true_sum <-sum (Данные [Данные [, 1] == 1 & Данные [, 2] == 1, 4]) </p>

это сделало трюк.

Спасибо еще раз!

0 голосов
/ 13 мая 2018

ваше единственное истинное состояние:

Если (1,1) = (1) И если (1,2) = (1), то считать значение в (1,4)

Я не понимаю, посчитайте значение

может быть, это решение:

dplyr::mutate(new=ifelse(col1==1&col2==1,col4,0)

дает вам новый столбец Надеюсь, что решит вашу проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...