У меня есть следующий набор данных:
dataset1 <- data.frame(
bnames = c("T1", "T1", "T2", "T3", "T3"),
events = c("I", "O", "I", "I", "O"),
freq = c(1,2,3,4,5))
Я хочу преобразовать этот набор данных в широкий формат, мой подход (с использованием пакета reshape
):
dataset2 <- melt(dataset1, id.vars = c("bnames", "events"))
dataset2 <- dataset2[c("bnames", "events", "value")]
names(dataset2) <- c("bnames", "events", "freq")
содержание dataset2
:
bnames events freq
1 T1 I 1
2 T1 O 2
3 T2 I 3
4 T3 I 4
5 T3 O 5
Но в столбце bnames
всегда должно быть две строки с одинаковыми именами. Одна строка с I
и другая с O
в столбце events
. Если соответствующее значение не существует в исходном наборе данных (dataset1
), тогда значение в freq
всегда должно быть 0. Поэтому мой желаемый результат в этом случае должен быть:
bnames events freq
1 T1 I 1
2 T1 O 2
3 T2 I 3
4 T2 O 0
5 T3 I 4
6 T3 O 5
Как это сделать? Спасибо