Удаление строк для определенных значений столбцов для двоичных данных

#r

#r

Вопрос:

У меня есть данные, которые выглядят примерно так:

 cnme1 cnme2 year  midonging  midonset
USA   RUS   1945  0          0
USA   RUS   1946  0          1
USA   RUS   1947  1          0 
USA   RUS   1948  1          0
USA   RUS   1949  0          0
USA   UK    1945  0          0
USA   UK    1946  0          0
USA   UK    1947  0          0
.
.
.
USA  RUS   2010   0           0
 

Каждая строка состоит из года для двух стран и переменных, указывающих, была ли эта страна-диада вовлечена в какой-либо конфликт. В некоторых двоичных годах (США-Россия) есть годы продолжающегося конфликта, тогда как в других (США-Великобритания) конфликта вообще нет.

Я хочу подмножество стран-диад, которые в какой-то момент времени были вовлечены в какой-то конфликт. Таким образом, в основном избавляемся от любой страны-диады (например, США-Великобритания), для которой определенные переменные кодируются как «0» на протяжении всего времени, и сохраняем те, в которых в истории диады был конфликт (например, США-Сирия или США-Венесуэла).

Комментарии:

1. Пожалуйста, приведите пример желаемого результата.

Ответ №1:

Использование base R

 df[rowSums(df[c("midonging", "midonset")]) >0,]
 

Ответ №2:

Вы можете сделать следующее.

 library(dplyr)

df %>% filter(midonging   midonset != 0)

# # A tibble: 3 x 5
#   cnme1 cnme2  year midonging midonset
#   <chr> <chr> <dbl>     <dbl>    <dbl>
# 1 USA   RUS    1946         0        1
# 2 USA   RUS    1947         1        0
# 3 USA   RUS    1948         1        0
 

Данные

 df <- structure(list(cnme1 = c("USA", "USA", "USA", "USA", "USA", "USA", 
"USA", "USA"), cnme2 = c("RUS", "RUS", "RUS", "RUS", "RUS", "UK", 
"UK", "UK"), year = c(1945, 1946, 1947, 1948, 1949, 1945, 1946, 
1947), midonging = c(0, 0, 1, 1, 0, 0, 0, 0), midonset = c(0, 
1, 0, 0, 0, 0, 0, 0)), row.names = c(NA, -8L), class = c("tbl_df", 
"tbl", "data.frame"))