我想做的就是把列1:3和列4:6结合起来。
最后的产品只有3列,col4低于col1,col5低于col2,等等。
我看到的所有解决方案都依赖于数据中不存在的ID列。我查看了道集()、堆栈()、熔体()。我只想把最后3列剪贴在前3栏下面,
发布于 2020-08-04 20:16:04
如果首先将列重命名为匹配,则可以使用rbind函数将前三列下面的最后三列粘贴起来。
names(df) <- rep(names(df)[1:3], 2)
df <- rbind(df[,1:3], df[,4:6])发布于 2020-08-04 20:09:07
如果列都包含相同的类(即整数),则可以简单地使用rbind()函数将列4:6绑定到列1:3下。
如果它们具有不同的格式,则可以定义具有组合列的新数据集:
new.data = data.frame("First"=c(data[,1],data[,4]),
"Second"=c(data[,2],data[,5]),
"Third"=c(data[,3],data[,6]))使用rbind(),您只需添加下面的列,如本例所示:
> dta = matrix(rep(c(1,2,3,4,5,6),6),ncol=6,byrow=T)
> print(dta)
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 2 3 4 5 6
[2,] 1 2 3 4 5 6
[3,] 1 2 3 4 5 6
[4,] 1 2 3 4 5 6
[5,] 1 2 3 4 5 6
[6,] 1 2 3 4 5 6
> rbind(dta[,1:3],dta[,4:6])
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 1 2 3
[3,] 1 2 3
[4,] 1 2 3
[5,] 1 2 3
[6,] 1 2 3
[7,] 4 5 6
[8,] 4 5 6
[9,] 4 5 6
[10,] 4 5 6
[11,] 4 5 6
[12,] 4 5 6发布于 2020-08-04 20:10:30
假设您的数据如下所示,您可以使用基本R中的reshape:
a <- head(cbind(iris[1:3], iris[1:3]))
a
Sepal.Length Sepal.Width Petal.Length Sepal.Length Sepal.Width Petal.Length
1 5.1 3.5 1.4 5.1 3.5 1.4
2 4.9 3.0 1.4 4.9 3.0 1.4
3 4.7 3.2 1.3 4.7 3.2 1.3
4 4.6 3.1 1.5 4.6 3.1 1.5
5 5.0 3.6 1.4 5.0 3.6 1.4
6 5.4 3.9 1.7 5.4 3.9 1.7要使用的代码:
reshape(a, matrix(names(a), 3), dir="long")
time Sepal.Length Sepal.Width Petal.Length id
1.1 1 5.1 3.5 1.4 1
2.1 1 4.9 3.0 1.4 2
3.1 1 4.7 3.2 1.3 3
4.1 1 4.6 3.1 1.5 4
5.1 1 5.0 3.6 1.4 5
6.1 1 5.4 3.9 1.7 6
1.2 2 5.1 3.5 1.4 1
2.2 2 4.9 3.0 1.4 2
3.2 2 4.7 3.2 1.3 3
4.2 2 4.6 3.1 1.5 4
5.2 2 5.0 3.6 1.4 5
6.2 2 5.4 3.9 1.7 6https://stackoverflow.com/questions/63254185
复制相似问题