我试图在这件事上找到一个已经存在的问题,但我不能这就是为什么我在这里问你:
我想从几个列中创建一个列。列中的所有值都按照它们的顺序放置,并且列应该堆叠在彼此之下。
以下是我的csv.file的示例。但请注意,有大约400列,这就是为什么我不想在Excel中手动执行此操作。所有列各有24行。
X1 X2 X3 X4 X5 X6 ... X470
0 1 5 10 8 0 7
0 0 0 0 0 0 0
2 3 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
我想"堆叠"正如我在摘要中简要描述的那样,列中的所有列都是:
信息:标志" ..."下面表示该列的其余值。
VALUE FROM COLUMN
0 X1
0 X1
2 X1
...
1 X2
0 X2
3 X2
...
5 X3
...
10 X4
...
8 X5
...
0 X6
...
7 X470
...
所以最后,而不是486列,其中每个有24行。我将有一列11664行。如果将原始列写在一侧的新列中(如上所示),那将是好的,但这不是"义务"。
OBS!请注意,我使用此df只是显示了我想要实现的内容,所以我会将它应用到我的df中,因此可以理解清晰易懂的命令。
如果解决方案是在R或Excel中完成的,那无关紧要!只要很容易就做
我希望我的描述清楚,否则请让我知道,以便我可以尝试再次描述。
非常感谢您的建议和帮助。
亲切的问候,艾琳
答案 0 :(得分:3)
我们可以使用stack
获取一列中的值,然后使用下一列中的列号。
stack(df)
或使用unlist
data.frame(VALUE=unlist(df),
fromColumn= rep(names(df), each=nrow(df)))
答案 1 :(得分:1)
这是一个用于完成工作的VBA用户定义函数:
Function ConcatCols(Colrange As Variant) As Variant
Dim LongCol() As Variant, i As Long, j As Long, k As Long
Dim NumCols As Long, NumRows As Long, NumRows2 As Long
If TypeName(Colrange) = "Range" Then Colrange = Colrange.Value2
NumRows = UBound(Colrange)
NumCols = UBound(Colrange, 2)
NumRows2 = NumRows * NumCols
ReDim LongCol(1 To NumRows2, 1 To 1)
k = 1
For i = 1 To NumCols
For j = 1 To NumRows
LongCol(k, 1) = Colrange(j, i)
k = k + 1
Next j
Next i
ConcatCols = LongCol
End Function
在VBA模块中输入代码,然后输入= ConcatCols(A1:RL24)作为数组函数(Ctrl-Shift-Enter)在RM列(或任何您想要的位置)查看整个连接列,或从VBA sub将数据写入电子表格。
答案 2 :(得分:0)
以下内容非常简单,但需要加载我认为包含在基础中的reshape2
包。如上所述,stack()
提供类似的输出,但会反转列。
library(reshape2)
df <- data.frame("A" = 1:21, "B" = 21:41, "C" = 40:60)
> df
A B C
1 1 21 40
2 2 22 41
3 3 23 42
4 4 24 43
5 5 25 44
6 6 26 45
7 7 27 46
8 8 28 47
9 9 29 48
10 10 30 49
11 11 31 50
12 12 32 51
13 13 33 52
14 14 34 53
15 15 35 54
16 16 36 55
17 17 37 56
18 18 38 57
19 19 39 58
20 20 40 59
21 21 41 60
melt(df)
> melt(df)
No id variables; using all as measure variables
variable value
1 A 1
2 A 2
3 A 3
4 A 4
5 A 5
6 A 6
7 A 7
8 A 8
9 A 9
10 A 10
11 A 11
12 A 12
13 A 13
14 A 14
15 A 15
16 A 16
17 A 17
18 A 18
19 A 19
20 A 20
21 A 21
22 B 21
23 B 22
24 B 23
25 B 24
26 B 25
27 B 26
28 B 27
29 B 28
30 B 29
31 B 30
32 B 31
33 B 32
34 B 33
35 B 34
36 B 35
37 B 36
38 B 37
39 B 38
40 B 39
41 B 40
42 B 41
43 C 40
44 C 41
45 C 42
46 C 43
47 C 44
48 C 45
49 C 46
50 C 47
51 C 48
52 C 49
53 C 50
54 C 51
55 C 52
56 C 53
57 C 54
58 C 55
59 C 56
60 C 57
61 C 58
62 C 59
63 C 60