Tôi có một data.frame df
và tôi muốn rằng tất cả các hàng trong df
này được nhân đôi lengthTime
lần và rằng một cột mới được thêm vào mà đếm 1-lengthTime
cho mỗi hàng trong df
.Thay thế cho expand.grid cho data.frames
Tôi biết, nghe có vẻ khá phức tạp, nhưng điều tôi muốn là áp dụng expand.grid
đến df
. Dưới đây là một workaround xấu xí và tôi có cảm giác rằng có nhất là một giải pháp dễ dàng hơn (thậm chí có một chức năng cơ bản-R?):
df <- data.frame(ID = rep(letters[1:3], each=3),
CatA = rep(1:3, times = 3),
CatB = letters[1:9])
lengthTime <- 3
nrRow <- nrow(df)
intDF <- df
for (i in 1:(lengthTime - 1)) {
df <- rbind(df, intDF)
}
df$Time <- rep(1:lengthTime, each=nrRow)
Tôi nghĩ rằng tôi chỉ có thể sử dụng expand.grid(df, 1:lengthTime)
, nhưng điều đó không làm việc. outer
cũng không mang lại bất kỳ may mắn nào. Vì vậy, không ai biết một giải pháp tốt?
Mỏ thực sự không khác gì joran's đã đánh bại tôi 40 giây nhưng tôi sẽ để nó càng rõ ràng hơn. –
Đầu tiên đến, lần đầu tiên phục vụ, vì vậy tôi chấp nhận câu trả lời của mình ;-) Nhưng +1 cho cả hai bạn. Đó là một giải pháp rất gọn gàng! –