在 R 中复制 DataFrame 中的条目

Replicate entries in DataFrame in R

我有一个公司名称的数据框:(names)

               names
 1               3M CO
 2 ABBOTT LABORATORIES
 3          ABBVIE INC
 4       ACCENTURE PLC
 5             ACE LTD
 6         ACTAVIS PLC

我想将每个条目复制 5 次,所以我有:

               names
 1               3M CO
 1               3M CO
 1               3M CO
 1               3M CO
 1               3M CO
 2 ABBOTT LABORATORIES
 2 ABBOTT LABORATORIES
 2 ABBOTT LABORATORIES
 2 ABBOTT LABORATORIES
 2 ABBOTT LABORATORIES
 3          ABBVIE INC
 3          ABBVIE INC
 3          ABBVIE INC
 3          ABBVIE INC
 3          ABBVIE INC
  ......

我试过 append 和 rep,但我想我可能需要一个 for 循环?

你实际上可以使用 rep:

d <- data.frame(x = letters[1:5])
> d
  x
1 a
2 b
3 c
4 d
5 e

> d[rep(seq_len(nrow(d)),each = 5),,drop = FALSE]
    x
1   a
1.1 a
1.2 a
1.3 a
1.4 a
2   b
2.1 b
2.2 b
2.3 b
2.4 b
3   c
3.1 c
3.2 c
3.3 c
3.4 c
4   d
4.1 d
4.2 d
4.3 d
4.4 d
5   e
5.1 e
5.2 e
5.3 e
5.4 e

下面是一个使用 plyr 的例子。

library(plyr)

myDF <- data.frame(
    names=c('3M CO', 'ABBOTT LABORATORIES', 'ABBVIE INC', 
            'ACCENTURE PLC', 'ACE LTD', 'ACTAVIS PLC'),
    stringsAsFactors=FALSE
)

myfun <- function(x) {
    dat <- rep(x$names, times=5)
    return(data.frame(names=dat, stringsAsFactors=FALSE))
}

newDF <- ddply(myDF, 'names', myfun)