1. ホーム
  2. r

[解決済み] data.frameの各行を列で指定された回数だけ繰り返す

2022-04-20 08:17:55

質問

df <- data.frame(var1 = c('a', 'b', 'c'), var2 = c('d', 'e', 'f'),
                 freq = 1:3)

上記のdata.frameの最初の2列の各行を、列'freq'で指定された回数だけ繰り返すように展開する最も簡単な方法は何でしょうか。

つまり、この状態から行ってください。

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