我有一个包含四列X1,X2,X3和Y的数据框.Y值对每行中的所有X值都是通用的。我想重新排列数据框,使其具有单个X列(包含所有三个X值列),并在第二列中显示相应的Y值。最终目标是能够绘制X,Y,然后使用适当的模型回归Y~X。
以下是使用
的示例x1<-c(1,14,87,126,483,1004)
x2<-c(18,43,112,364,987,1014)
x3<-c(4,83,96,125,631,872)
y<-c(3,54,68,73,135,287)
df<-data.frame(x1,x2,x3,y)
这就是它的样子
x1 x2 x3 y
1 1 18 4 3
2 14 43 83 54
3 87 112 96 68
4 126 364 125 73
5 483 987 631 135
6 1004 1014 872 287
这就是我想要的样子
X Y
1 3
14 54
87 68
126 73
483 135
1004 287
18 3
43 54
112 68
364 73
987 135
1014 287
4 3
83 54
96 68
125 73
631 135
872 287
我看了here,但没有重复的常见列,就像我的“y”列一样。
答案 0 :(得分:1)
<强>予。使用rbind()
和cbind()
功能
df1 <- data.frame(rbind(cbind(df$x1,df$y), cbind(df$x2, df$y), cbind(df$x2, df$y)))
names(df1) <- c("X","y")
OR
df1 <- data.frame(rbind(cbind(X = df$x1,y = df$y), cbind(X=df$x2, y=df$y), cbind(X=df$x2, y=df$y)))
<强> II。使用stack()
功能
df1 <- data.frame(X = stack(df, select = c(x1,x2,x3))[,1], y = df$y)
答案 1 :(得分:1)
您可以使用gather
和来自tidyr
的{{1}}以及来自select
的{{1}}:
dplyr
答案 2 :(得分:1)