我有这样的数据集
X1 X2 X3
Cat 123 11
9
Cat 456 22
8
Cat 789 33
7
有什么方法可以连接连续的行并形成像这样的新数据集
X1 X2 X3
Cat9 123 11
Cat8 456 22
Cat7 789 33
注意 - x2和x3的偶数行有意为空
答案 0 :(得分:1)
这可能是一种粗暴的做法。您可以cbind
偶数行和奇数行,然后使用paste0
:
dt2<-cbind(dt1[seq(1,(nrow(dt1)-1),2),],X4=dt1[seq(2,(nrow(dt1)),2),]$X1)
dt2<-dt2[,.(X1=paste0(X1,X4),X2,X3)]
答案 1 :(得分:1)
基本上提取奇数行和偶数行数据表,然后连接起来形成最终所需的输出。
library(data.table)
#convert odd rows data table into matrix
DT1 <- as.matrix(DT[seq(1, nrow(DT), by = 2), ])
#convert even rows data table into matrix
DT2 <- as.matrix(DT[seq(2, nrow(DT), by = 2), ])
#final result
as.data.table(matrix(paste0(DT1, DT2), nrow = nrow(DT1)))
示例数据:
DT <- structure(list(X1 = c("Cat", "9", "Cat", "8", "Cat", "7"), X2 = c("123", "", "456", "", "789", ""), X3 = c("11", "", "22", "", "33", "")), .Names = c("X1", "X2", "X3"), row.names = c(NA, -6L), class = c("data.table", "data.frame"))
答案 2 :(得分:0)
使用Prem的样本数据:
DTclean <- DT[1:nrow(DT) %% 2 != 0]
DTclean[, X1 := paste0(X1, DT[1:nrow(DT) %% 2 == 0, X1])]
DTclean
X1 X2 X3
1: Cat9 123 11
2: Cat8 456 22
3: Cat7 789 33