R: Добавить новый столбец на основе условия с несколькими столбцами - PullRequest
1 голос
/ 04 ноября 2019

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

Date      Test1  Test2  Test3
18-3-2016   1      0      0
18-3-2016   0      0      1
19-4-2016   1      0      0
12-2-2017   0      0      0
15-2-2017   0      0      0

Я хочу добавить новый столбец, который размещает 1 или 0 на основекакие значения находятся в 3 тестовых столбцах. Только если все тестовые столбцы имеют значение 0, тогда я хочу, чтобы новый столбец имел значение 1. Если любой тестовый столбец имеет значение 1, то он должен возвращать значение 0 вновый столбец. Новый требуемый кадр данных будет выглядеть следующим образом:

Date      Test1  Test2  Test3  New
18-3-2016   1      0      0     0
18-3-2016   0      0      1     0
19-4-2016   1      0      0     0
12-2-2017   0      0      0     1
15-2-2017   0      0      0     1

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

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

df$New <- ifelse(df[2:4] >0, 1, 0)

Date      Test1  Test2  Test3  New.Test1  New.Test2  New.Test3       
18-3-2016   1      0       0      0            1         1
18-3-2016   0      0       1      1            1         0
19-4-2016   1      0       0      0            1         1
12-2-2017   0      0       0      1            1         1
15-2-2017   0      0       0      1            1         1

Любая помощь приветствуется.

Ответы [ 2 ]

2 голосов
/ 04 ноября 2019

Вы могли бы попробовать условно исходя из их суммы? Например, если все 3, добавленные вместе, равны 0, создайте новый столбец 1. Примерно так:

df$New <- ifelse(df$Test1 + df$Test2 + df$Test3 == 0, 1, 0)

1 голос
/ 04 ноября 2019

Ваша ifelse() идея была хорошим подходом, с разницей в следующем условии:

df$New <- ifelse(df$Test1 == 0 & df$Test2 == 0 & df$Test3 == 0,
                  1,
                  0)

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

...