#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"))