【问题标题】:Rownames to column in table not working, converts to list or as.data.frame introduces extra rows表中列的行名不起作用,转换为列表或 as.data.frame 引入了额外的行
【发布时间】:2018-02-09 18:54:58
【问题描述】:

我的数据是来自较大数据框的分类变量的计数表。我的目标是绘制该数据框中每种治疗的存活/死亡实例数。

数据框如下所示:

  Treatment Plate Sex                 Days Status
1          1     1   U                  NA   Dead
2          1     1   U                  NA   Dead
3          1     1   U                  NA   Dead
4          1     1   U                  NA   Alive
5          1     1   U                  NA   Dead
6          1     1   U                  NA   Dead

数据表如下所示:

表(子集$Treatment,子集$Status)

           Dead Still_kicking
  1         144             0
  3         141             3
  7         144             0
  10        105            39
  13         69             3
  Control    12            60
  Control2    2            70

我希望将行名称列在列(更喜欢单行)。当我尝试添加列时,我得到了这个:

> Status$names <- rownames(Status)
Warning message:
In Status$names <- rownames(Status) : Coercing LHS to a list
> Status
[[1]]
[1] 144

[[2]]
[1] 141

[[3]]
[1] 144

如果我转换为数据框,我会得到额外的行:

> Status <- data.frame(Status)
> Status
       Var1          Var2 Freq
1         1          Dead  144
2         3          Dead  141
3         7          Dead  144
4        10          Dead  105
5        13          Dead   69
6   Control          Dead   12
7  Control2          Dead    2
8         1 Still_kicking    0
9         3 Still_kicking    3
10        7 Still_kicking    0
11       10 Still_kicking   39
12       13 Still_kicking    3
13  Control Still_kicking   60
14 Control2 Still_kicking   70

【问题讨论】:

  • 您需要注意的一点是,表格是重组后的数据框。例如,因此行名不是观察单位,而是变量
  • 您也可以使用as.data.frame.matrix(Status) 这将创建一个与您的表格一模一样的data.frame。见stackoverflow.com/questions/10758961/…

标签: r dataframe


【解决方案1】:

你似乎在寻找unclass

在下面的示例中,我使用了mtcars 数据集来转换table(mtcars$cyl, mtcars$am)

     0  1
  4  3  8
  6  4  3
  8 12  2

转换成数据框格式。

tibble::rownames_to_column 可用于添加行名作为第一列。

library(tibble)
rownames_to_column(data.frame(unclass(table(mtcars$cyl, mtcars$am))), 
                   "rownames_col")

输出是:

  rownames_col X0 X1
1            4  3  8
2            6  4  3
3            8 12  2

【讨论】:

    猜你喜欢
    • 2022-08-14
    • 1970-01-01
    • 1970-01-01
    • 2019-09-19
    • 1970-01-01
    • 2019-05-25
    • 1970-01-01
    • 2020-04-26
    • 1970-01-01
    相关资源
    最近更新 更多