R 如何将每n列一列绑定为行(从宽到长)?

R 如何将每n列一列绑定为行(从宽到长)?,r,split,dplyr,reshape,melt,R,Split,Dplyr,Reshape,Melt,以下是我没有列名的数据集: ADNAC TI 0.09 ADNAC TI 0.09 ADNAC TI 0.09 ADNAC TI 0.08 AEFES TI 3.76 AEFES TI 3.48 AEFES TI 3.74 AEFES TI 3.24 AGHOL TI 0.43 AGHOL TI 0.37 AGHOL TI 0.31 AGHOL TI 0.39

以下是我没有列名的数据集:

ADNAC TI     0.09   ADNAC TI     0.09   ADNAC TI     0.09   ADNAC TI     0.08 
AEFES TI     3.76   AEFES TI     3.48   AEFES TI     3.74   AEFES TI     3.24 
AGHOL TI     0.43   AGHOL TI     0.37   AGHOL TI     0.31   AGHOL TI     0.39 
AGYO TI      0.09   AGYO TI      0.08   AGYO TI      0.08   AGYO TI      0.08 
AKBNK TI     9.21   AKBNK TI     8.30   AKBNK TI     8.26   AKBNK TI     10.57 
AKCNS TI     0.45   AKCNS TI     0.43   AKCNS TI     0.43   AKCNS TI     0.47 
AKENR TI     0.53   AKENR TI     0.46   AKENR TI     0.45   AKENR TI     0.43 
并排的每两列表示一天(在本例中为字符串及其各自的值)。总共有100行和382列,因此是191天。我想做的是每天一行一行地堆叠,独立于他们的一天。因此,我总共有100x191行,只有2列,字符串(股票名称)和相应的值。这看起来像:

ADNAC TI     0.09 
AEFES TI     3.76 
AGHOL TI     0.43 
AGYO TI      0.09 
AKBNK TI     9.21 
AKCNS TI     0.45 
AKENR TI     0.53 
ADNAC TI     0.09 
AEFES TI     3.48 
AGHOL TI     0.37 
AGYO TI      0.08 
AKBNK TI     8.30 
AKCNS TI     0.43 
AKENR TI     0.46 
ADNAC TI     0.09 
AEFES TI     3.74 
AGHOL TI     0.31 
AGYO TI      0.08 
AKBNK TI     8.26 
AKCNS TI     0.43 
AKENR TI     0.45 
ADNAC TI     0.08 
AEFES TI     3.24 
AGHOL TI     0.39 
AGYO TI      0.08 
AKBNK TI     10.57 
AKCNS TI     0.47 
AKENR TI     0.43 

到目前为止,我尝试的是分割数据:
data\u long一种简单的方法是使用向量循环来选择备用列,
unlist
将它们作为向量来获取数据并创建新的数据帧

data.frame(stock = unlist(df[c(TRUE, FALSE)]),value = unlist(df[c(FALSE, TRUE)]), 
            row.names = NULL, stringsAsFactors = FALSE)


#     stock value
#1  ADNACTI  0.09
#2  AEFESTI  3.76
#3  AGHOLTI  0.43
#4   AGYOTI  0.09
#5  AKBNKTI  9.21
#6  AKCNSTI  0.45
#7  AKENRTI  0.53
#8  ADNACTI  0.09
#9  AEFESTI  3.48
#10 AGHOLTI  0.37
#11  AGYOTI  0.08
#12 AKBNKTI  8.30
#13 AKCNSTI  0.43
#14 AKENRTI  0.46

使用
split.default
我们可以执行以下操作:

df[c(TRUE, FALSE)] <- lapply(df[c(TRUE, FALSE)], as.character)
do.call(cbind.data.frame, lapply(split.default(df, c(TRUE, FALSE)), unlist))
df[c(真、假)]
df <- structure(list(V1 = structure(1:7, .Label = c("ADNACTI", "AEFESTI", 
"AGHOLTI", "AGYOTI", "AKBNKTI", "AKCNSTI", "AKENRTI"), class = "factor"), 
V2 = c(0.09, 3.76, 0.43, 0.09, 9.21, 0.45, 0.53), V3 = structure(1:7, 
.Label = c("ADNACTI","AEFESTI", "AGHOLTI", "AGYOTI", "AKBNKTI", "AKCNSTI", 
"AKENRTI"), class = "factor"), V4 = c(0.09, 3.48, 0.37, 0.08, 8.3, 
0.43, 0.46)), class = "data.frame", row.names = c(NA, -7L))