Предположим, у меня есть этот фрейм данных:
df <- data.frame(town = c("town1","town2","town3"),
totpop = c(1700, 1500, 1200),
groupAreceived = c(10, 5, 2),
groupBreceived = c(9, 4, 1),
groupCreceived = c(8, 3, 0))
, который выглядит следующим образом:
df
town totpop groupAreceived groupBreceived groupCreceived
1 town1 1700 10 9 8
2 town2 1500 5 4 3
3 town3 1200 2 1 0
Я хочу создать новый фрейм данных с четырьмя столбцами, который повторяет город, группу и количествополучено с количеством строк на основе общей численности населения.
Я могу сделать это вручную для одного города:
town1.a <- data.frame(matrix(ncol = 4, nrow = df$totpop[[1]]))
x <- c("totpop", "group", "received", "town")
colnames(town1.a) <- x
totpop <- c(rep(1, df$totpop[[1]]))
group <- c(rep("A", df$totpop[[1]]))
received <- c(rep(df$groupAreceived[[1]], df$totpop[[1]]))
town <- c(rep("Town1", df$totpop[[1]]))
town1.a$totpop <- totpop
town1.a$group <- group
town1.a$received <- received
town1.a$town <- town
head(town1.a)
totpop group received town
1 1 A 10 Town1
2 1 A 10 Town1
3 1 A 10 Town1
4 1 A 10 Town1
5 1 A 10 Town1
6 1 A 10 Town1
Этот фрейм данных будет иметь 1700 строк.
Какможно ли автоматизировать этот код / использовать его в цикле for, чтобы он делал то же самое, но для каждой группы?
Заранее спасибо.