a <- data.frame(type=c("A", "A","A", "B", "B"), x1 = c(4,7,9,1,2),x2=c(6,4,6,3,7),
x3 = c(9,1,2,8,9))
library(dplyr)
tmp <-
a %>%
group_by(type) %>%
summarise(no_rows = length(type))
for(i in unique(a$type)){
n <- max(tmp$no_rows) - nrow(a[a$type == i,])
nn <- nrow(a)
if(n > 0){
for(ii in 1:n){
a[nn+ii,] <- c(i,NA,NA,NA)
}
}
}
a <- a[order(a$type),]
a$timevar <- seq(1:max(tmp$no_rows))
b<-reshape(a,timevar="timevar",idvar="type",direction="wide",drop = F)
b
type x1.1 x2.1 x3.1 x1.2 x2.2 x3.2 x1.3 x2.3 x3.3
1 A 4 6 9 7 4 1 9 6 2
4 B 1 3 8 2 7 9 <NA> <NA> <NA>
欢迎的StackOverflow!我注意到Vector B是多维的,所以这就是我们所说的R语言中的data.frame或矩阵。你是这个意思吗?或者你想要3个独立的载体? –
我们也可以调用Vector B a Matrix。我编辑了原始问题,使其更加清晰。谢谢! – SDM1212
当然。我做了一个特别的解决方案,然后我们受到了无评论的恶魔怪兽的攻击,所以我不得不删除它。如果你的数据很大或者你需要做很多工作,我们应该找到一个更加程序化的解决方案。唯一真正的困难是,在这种格式中,我们需要为缺失的B单元格添加NA。因此,我认为通过'for'循环,'cbind'和'rbind'使用'fill = T'是一种方法去。 –