df <- data.frame(var1 = c('a', 'b', 'c'), var2 = c('d', 'e', 'f'),
freq = 1:3)
Что самый простой путь состоит в том, чтобы развернуть каждую строку первые два столбца data.frame выше, так, чтобы каждая строка была повторена количество раз, указанное в столбце 'частота'?
Другими словами, пойдите от этого:
df
var1 var2 freq
1 a d 1
2 b e 2
3 c f 3
К этому:
df.expanded
var1 var2
1 a d
2 b e
3 b e
4 c f
5 c f
6 c f
Вот одно решение:
df.expanded <- df[rep(row.names(df), df$freq), 1:2]
Результат:
var1 var2
1 a d
2 b e
2.1 b e
3 c f
3.1 c f
3.2 c f