Я пытаюсь добавить строки в R data.frame. Вот пример data.frame "foo":
A B C D
1 1 1 200
1 1 2 50
1 1 3 15
1 2 1 150
1 2 4 50
1 3 1 300
2 1 2 40
2 1 4 90
2 3 2 80
Для каждого A существует 3 возможных значения B, а для каждого B существует 4 возможных значения C. Однако начальный df содержит только ненулевые значения D. Я хотел бы манипулировать df так, чтобы нули включены как для B, так и для C. Таким образом, df будет показывать 0 в D для любого значения B / C, равного 0. Я видел вопросы, которые касаются этого с одним столбцом, но не мог найти вопрос, касающийся этого с несколькими столбцы. Окончательный df будет выглядеть так:
A B C D
1 1 1 200
1 1 2 50
1 1 3 15
1 1 4 0
1 2 1 150
1 2 2 0
1 2 3 0
1 2 4 50
1 3 1 300
1 3 2 0
1 3 3 0
1 3 4 0
2 1 1 0
2 1 2 40
2 1 3 0
2 1 4 90
2 2 1 0
2 2 2 0
2 2 3 0
2 2 4 0
2 3 1 0
2 3 2 80
2 3 3 0
2 3 4 0
Сначала я попытался создать фиктивный фрейм данных, который затем объединился с исходным df, но что-то не работает. Вот текущий код, который, как я знаю, неверен, потому что этот код генерирует строки только на основе A. Я думаю, что хочу создать фиктивный кадр на основе A и B, но я не знаю, как - может ли здесь работать функция if/else ?:
# create dummy df
dummy <- as.data.frame(
cbind(
sort(rep(unique(foo$A), 12)),
rep(1:3,length(unique(foo$A)))))
colnames(dummy) <- c("A","B")
foo$A <- as.numeric(foo$A)
foo$B <- as.numeric(foo$C)
# merge with foo
mergedummy <- merge(dummy,foo,all.x=T)
Любое понимание очень ценится - спасибо!