2014-02-08 39 views
3

我想堆叠多个向量,所以我可以对以下数据进行重复测量ANOVA,但我不确定要使用什么命令。需要堆叠的天数。堆栈向量在R

该数据集被称为'tbl'。

Hydrocarbons T0 2 days 5 days 8 days 12 days 16 days 21 days 
C12-C16b  255 210 134 91 64 41 189 
C17-C25 b  857 707 428 405 322 208 708 
C26-C32 b  232 193 139 122 92 57 165 
C33-C37 b    84 79 72 63 61 32 84 
+0

'table'是基础R函数的名称,这样你可能做得更好呼唤你的表别的东西像da t'。你能举一个例子说明你希望输出数据的外观以及你尝试过的步骤吗?请注意,您可以使用问题编辑器中的“{}”按钮来改进表格的格式。 –

+0

'stack(tbl,select = c(T0,2days,5days,8days))' – rawr

回答

1

我猜,你想从一个宽幅移动到长格式,因此使用melt命令从reshape2库会做的伎俩。

tbl.melt = melt(tbl, id.vars = "Hydrocarbons", variable.name = "measured.at", value.name = "measurement")

进一步的信息,请参阅?melt

我试图让它多了几分重复性:

tbl.txt = " 
Hydrocarbons T0 2days 5days 8days 12days 16days 21days 
C12-C16b  255 210 134 91 64 41 189 
C17-C25b  857 707 428 405 322 208 708 
C26-C32b  232 193 139 122 92 57 165 
C33-C37b    84 79 72 63 61 32 84" 

tbl = read.table(text=tbl.txt,header=TRUE) 
tbl.melt = melt(tbl, id.vars="Hydrocarbons", variable.name = "measured.at", value.name = "measurement") 
tbl.melt 

输出是:

Hydrocarbons measured.at value 
1  C12-C16b   T0 255 
2  C17-C25b   T0 857 
3  C26-C32b   T0 232 
4  C33-C37b   T0 84 
5  C12-C16b  X2days 210 
6  C17-C25b  X2days 707 
7  C26-C32b  X2days 193 
8  C33-C37b  X2days 79 
9  C12-C16b  X5days 134 
10  C17-C25b  X5days 428 
11  C26-C32b  X5days 139 
12  C33-C37b  X5days 72 
13  C12-C16b  X8days 91 
14  C17-C25b  X8days 405 
15  C26-C32b  X8days 122 
16  C33-C37b  X8days 63 
17  C12-C16b  X12days 64 
18  C17-C25b  X12days 322 
19  C26-C32b  X12days 92 
20  C33-C37b  X12days 61 
21  C12-C16b  X16days 41 
22  C17-C25b  X16days 208 
23  C26-C32b  X16days 57 
24  C33-C37b  X16days 32 
25  C12-C16b  X21days 189 
26  C17-C25b  X21days 708 
27  C26-C32b  X21days 165 
28  C33-C37b  X21days 84 

注意的是,在定时“X”是通过从文本阅读你造成提供以及以数字值开头的字段名称。

2

这应该这样做,尽管我首先将列重命名为符合data.frame名称的R约定。我不认为将有必要,如果你是一个data.frame开始:

data.frame(tbl[1], stack(tbl[-1])) 

测试上:

structure(list(Hydrocarbons = structure(1:4, .Label = c("C12-C16b", 
"C17-C25b", "C26-C32b", "C33-C37b"), class = "factor"), T0 = c(255L, 
857L, 232L, 84L), x2days = c(210L, 707L, 193L, 79L), x5days = c(134L, 
428L, 139L, 72L), x8days = c(91L, 405L, 122L, 63L), x12days = c(64L, 
322L, 92L, 61L), x16days = c(41L, 208L, 57L, 32L), x21days = c(189L, 
708L, 165L, 84L)), .Names = c("Hydrocarbons", "T0", "x2days", 
"x5days", "x8days", "x12days", "x16days", "x21days"), class = "data.frame", row.names = c(NA, 
-4L)) 

还有一个as.data.frame.table功能,会做这个自动的如果真的一个R表,这更像是在R的“矩阵”看什么情况:

as.data.frame(tbl)