1

次のようなデータフレームがあります。

a<-c('a', 'b', 'c', 'd', 'e')

b<-c(1, 2, 3, 2, 3)

df<-data.frame(a, b)

      a b
    1 a 1
    2 b 2
    3 c 3
    4 d 2
    5 e 3

次のようなvector/data.frameを取得するために、列aの値を列bの数値で複製したいと思います。

c<-c('a', 'b', 'b', 'c', 'c', 'c', 'd', 'd', 'e', 'e', 'e')

       c
    1  a
    2  b
    3  b
    4  c
    5  c
    6  c
    7  d
    8  d
    9  e
    10 e
    11 e

あなたの提案をありがとう。

4

2 に答える 2

3

?rep次のように、 を見てください。

> with(df, rep(a, times = b))
 [1] a b b c c c d d e e e
Levels: a b c d e

係数ビットは、Rbdf. どちらか

> df <- data.frame(a, b, stringsAsFactors = FALSE)
> with(df, rep(a, times = b))
 [1] "a" "b" "b" "c" "c" "c" "d" "d" "e" "e" "e"

次に、上記の答え、または結果を文字ベクトルに変換します。

> with(df, as.character(rep(a, times = b)))
 [1] "a" "b" "b" "c" "c" "c" "d" "d" "e" "e" "e"
于 2013-02-01T20:49:25.567 に答える
1

全体を拡張したい場合はdata.frame、次のようなものを使用できます。

df <- data.frame(a = c('a', 'b', 'c', 'd', 'e'),
                 b = c(1, 2, 3, 2, 3))
df[rep(rownames(df), df$b), ]
#     a b
# 1   a 1
# 2   b 2
# 2.1 b 2
# 3   c 3
# 3.1 c 3
# 3.2 c 3
# 4   d 2
# 4.1 d 2
# 5   e 3
# 5.1 e 3
# 5.2 e 3
于 2013-02-02T08:46:27.020 に答える