样品 输入数据集
x y z
a 1 2 3
b 4 5 6
c 7 8 9
其中a,b,c是rownames。 x,y,z是列名。
我希望输出如下:
cell Value
a_x 1
b_x 4
c_x 7
a_y 2
b_y 5
c_y 8
a_z 3
b_z 6
c_z 9
其中cell和value是2列。我们如何做到这一点?我是R的新手。
答案 0 :(得分:2)
这应该让您足够接近:将data.frame
视为table
,并使用data.frame
table
方法获取此长格式。如果您真的想要组合“Var1”和“Var2”,请使用paste
。
data.frame(as.table(as.matrix(mydf)))
# Var1 Var2 Freq
# 1 a x 1
# 2 b x 4
# 3 c x 7
# 4 a y 2
# 5 b y 5
# 6 c y 8
# 7 a z 3
# 8 b z 6
# 9 c z 9
当然,如果您的数据已经是class
“表格”,那么只需使用data.frame(<YourData>)
。
答案 1 :(得分:1)
示例数据:
> d<-data.frame(x=1:3,y=4:6,z=7:9)*10
> d
x y z
1 10 40 70
2 20 50 80
3 30 60 90
您可以堆叠数据框,但仍然会遗漏行名称:
> s<-stack(d)
values ind
1 10 x
2 20 x
3 30 x
4 40 y
5 50 y
6 60 y
7 70 z
8 80 z
9 90 z
所以将行名称附加到列名称:
> s$ind<-paste(s$ind,rownames(d),sep="_")
> s
values ind
1 10 x_1
2 20 x_2
3 30 x_3
4 40 y_1
5 50 y_2
6 60 y_3
7 70 z_1
8 80 z_2
9 90 z_3