对数据集的行和列进行操作

时间:2013-11-19 16:54:51

标签: r

样品 输入数据集

   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的新手。

2 个答案:

答案 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