Я хотел бы преобразовать фрейм данных A
в фрейм данных B
A = data.frame(male = c(3, 5), female = c(1,2))
B = data.frame(male = c(1,1,1,1,1,1,1,1,0,0,0), female = c(0,0,0,0,0,0,0,0,1,1,1))
У меня есть этот метод
new <- data.frame(male = c(rep(1, sum(male)), rep(0, sum(female))), female = c(rep(0, sum(male)), rep(1, sum(female))))
, который дает мне желаемый фрейм данных.
Однако есть ли лучший способ сделать это, поскольку мой исходный кадр данных (A) является более сложным, чем пример?
ОБНОВЛЕНИЕ
Кадр данных может быть более сложным, например,
A = data.frame(month = c("July", "August"), male = c(5, 3), female = c(2,1))
, который необходимо преобразовать в
data.frame(month = c(rep("July", 5), rep("July", 2), rep("Aug", 3), rep("Aug", 1)),
male = c(rep(1, 5), rep(0, 2), rep(1, 3), rep(0, 1)),
female = c(rep(0, 5), rep(1, 2), rep(0, 3), rep(1, 1)))
# month male female
#1 July 1 0
#2 July 1 0
#3 July 1 0
#4 July 1 0
#5 July 1 0
#6 July 0 1
#7 July 0 1
#8 August 1 0
#9 August 1 0
#10 August 1 0
#11 August 0 1
Спасибо.