Мои данные имеют 3 пропорции по географии и годам. Я пытаюсь агрегировать эти данные, отбрасывая NA и сопоставляя значения по 3 различным переменным по годам и географии.
Пример кадра данных выглядит следующим образом:
df <- data.frame(FIPS = c("01001", "01001", "01001","01001", "01001", "01001", "01003", "01003", "01003", "01003", "01003", "01003"),
Year = c(2000, 2000, 2000, 2001, 2001, 2001, 2000, 2000, 2000, 2001, 2001, 2001),
prop1 = c(0.7, NA, NA, 0.5, NA, NA, 0.3, NA, NA, 0.5, NA, NA),
prop2 = c(NA, 0.3, NA, NA, 0.5, NA, NA, 0.3, NA, NA, 0.1, NA),
prop3 = c(NA, NA, NA, NA, NA, NA, NA, NA, 0.4, NA, NA, 0.4))
Я предполагаю, что это можно сделать с помощью агрегатной или отдельной команды в R, но не знаю точно, как действовать, поскольку ни один из способов, приведенных ниже, не дает мне нужный кадр данных.
df2 = aggregate(df,by = list(df$FIPS, df$Year), FUN = ???)
df2 <- df %>% distinct(FIPS, Year, .keep_all = TRUE)
Ожидаемый кадр данных выглядит следующим образом:
df2 <- data.frame(FIPS = c("01001", "01001", "01003", "01003" ),
Year = c(2000, 2001, 2000, 2001),
prop1 = c(0.7, 0.5, 0.3, 0.5 ),
prop2 = c(0.3, 0.5, 0.3, 0.1),
prop3 = c(NA, NA, 0.4, 0.4))
Таким образом, в основном, я хочу, чтобы код выполнял поиск существующих пропорций (или NA, если они отсутствуют) в переменных «prop» по годам и FIPS и создавал новый фрейм данных с уникальным FIPS и годом с сопоставленными пропорциями.
Если кто-то может указать на ошибки в том, что я пытаюсь или дать мне другое решение, это будет очень цениться!