У меня есть датафрейм, который выглядит так:
group <- c('a', 'b', 'a', 'b')
year <- c(1990, 1990, 2000, 2000)
freq <- c(100, 120, 130, 170)
df <- data.frame(group, year, freq)
Для каждого отдельного года я хотел бы найти значение freq для строки с группой a
, разделенной на значение freq для строки с группой b
, и добавить эти значения пропорции в кадр данных. Результирующий кадр данных должен выглядеть следующим образом:
group <- c('a', 'b', 'c', 'a', 'b', 'c')
year <- c(1990, 1990, 1990, 2000, 2000, 2000)
freq <- c(100, 120, 100/120, 130, 170, 130/170)
df <- data.frame(group, year, freq)
Я пытался привести это в движение с помощью самых уродливых петель внизу, но снял поезд с рельсов. Если кто-нибудь может помочь показать мне, как выполнить эту элементарную задачу в R, я был бы благодарен!
for (year in unique(df$year)) {
a = df[ which(df$group == 'a' & df$year == year), ]
b = df[ which(df$group == 'b' & df$year == year), ]
proportion = a$freq / b$freq
row = c('c', year, proportion)
rbind(df, row)
}