在 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)
我有一个公司名称的数据框:(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)