Мой фрейм данных имеет 3 столбца, первый содержит имена разных партнеров, а второй содержит разные уровни (у всех партнеров есть все уровни). Третий столбец содержит объем этого конкретного уровня с этим партнером. Похоже, это
Partner | Level | Volume
a | 32 | 213
b | 32 | 450
c | 24 | 56
a | 24 | 213
Я хочу добавить столбец, который отображает долю определенного уровня в партнере. Например, дополнительный столбец в приведенном выше примере будет читать 50% для обеих строк с партнером а и 100% для остальных. Я попытался использовать цикл вроде этого
for (i in 1:nrow(df) {
for (a in partners) {
if (df$Partner[i] == a) {
df$Share[i] <- df$Volume[i] / filter(aggregate(.~Partner, df, sum), Partner %in% i)$Volume
break
}
}
}
Нет ошибки, но фрейм данных остается неизменным. Что я делаю не так, и есть ли другой способ сделать это лучше? Потому что я буду выполнять это на очень большом наборе данных