【发布时间】:2019-12-03 17:45:37
【问题描述】:
我有一个具有以下特征的数据框:
Z Y X1 X2 X3 X4 X5 ... X30
A n1 1 2 1 2 1 2 1 2
B n2 1 2 1 2 1 2 1 2
C n3 1 2 1 2 1 2 1 2
D n4 1 2 1 2 1 2 1 2
.
.
.
我的目的是将列 x1、x2、... x30 堆叠起来,并将新列与列 z、y 和 x 相关联。有些是这样的:
Newcolumn zyx
1 x-y-z
...我需要这样的数据框:
colum1 colum2
1 A+n1+X1.headername 1
2 B+n2+X2.headernam 2
3 C+n3X3.headername 1
4 D+n4X4.headername 2
. .
. .
. .
我正在尝试构建一个函数,但我遇到了一些麻烦 我按照以下代码获取数据框:
df$zy <- paste(df$z,"-",df$y)
之后,我删除了“z”和“y”列:
df$z <- NULL
df$y <- NULL
并将列 df$zy 保存为数据框以供以后使用:
df_zy <- as.data.frame(df$zy)
然后消除原始数据帧的df$xy:
df$xy <- NULL
之后,我将 x1 列保存为数据框,并合并 df_zy 和 x1 列的名称(名称为“1”):
a <- as.data.frame(df$`1`)
b <- cbind(a, df_xy, x_column= 1)
b$zy <- paste(b$x_column,"-",b$` df$zy`)
b$` df$zy ` <- NULL
b$ x_column <- NULL
colnames(b)
names(b)[names(b) == "b$`1`"] <- "new_column"
这有效,但仅适用于 x1 列,我需要 x1 到 x30,并堆叠所有新列
有人对这个问题有答案吗?谢谢!
【问题讨论】: