【问题标题】:Change Column into Index将列更改为索引
【发布时间】:2014-07-14 22:50:59
【问题描述】:

我有一个如下所示的表格,我正在尝试将其转换为第一列成为索引的方式,即我可以在其上使用类似条形图的函数。

               TFR_TT      ML            BGT  
1                0       26795        1577776.4
2                2        2779         432500.0
3                6           1            187.2

像下面这样的东西

                        ML            BGT  
               0       26705         1577776.4
               2        2779          432500.0
               6           1             187.2

然后运行折线图,这样我就可以得到 0,2,6 作为 X 轴作为 ML 和 Y 轴作为 BGT 之间的点

【问题讨论】:

  • 你的数据库是什么? mysql? mssql?
  • 有没有关系。仍然是 csv。
  • 假设它是一个叫做frame的R对象,你只需要index(frame) <- frame$TFR_TT;frame <- frame[,-frame[,1]]
  • 我怎么知道它是 csv?我认为这些是数据库列。无论如何,check thisthisthis
  • @J-Dizzle 标签 r 应该告诉你的

标签: r


【解决方案1】:

要获取索引,您必须设置 rownames()。过去,我使用 as.table.data.frame() 辅助函数来做

#sample data
dd<-structure(list(TFR_TT = c(0L, 2L, 6L), ML = c(26795L, 2779L, 
1L), BGT = c(1577776.4, 432500, 187.2)), .Names = c("TFR_TT", 
"ML", "BGT"), class = "data.frame", row.names = c("1", "2", "3"
))

barchart(as.table(dd, rownames=1)[,-1])

如果您指定 rownames= 参数,这将负责重新格式化对象并设置名称。

为了完整起见,我将在此处包含源代码

as.table.data.frame<-function(x, rownames=0) {
    numerics <- sapply(x,is.numeric)
    chars <- which(sapply(x,function(x) is.character(x) || is.factor(x)))
    names <- if(!is.null(rownames)) {
        if (length(rownames)==1) {
            if (rownames ==0) {
                 rownames(x)
            } else {
                as.character(x[,rownames])
            }
        } else {
            rownames
        }
    } else {
          if(length(chars)==1) {
            as.character(x[,chars])
        } else {
            rownames(x)
        }
    }
    x<-as.matrix(x[,numerics])
    rownames(x)<-names
    structure(x, class="table")
}

【讨论】:

  • 弗里克先生。当我运行您的代码时,它给了我一个错误,例如“as.table.default(dd, rownames = 1) 中的错误:无法强制转换为表格”我也将“条形图”更改为“条形图”
  • 你是否使用了我上面使用的示例 data.frame (dd)?您的 data.frame 与我的有何不同?如果您的数据是什么类()?它已经是一张桌子了吗?
  • 是的,完全复制,只是将条形图更改为条形图。
  • 您在复制/粘贴as.table.data.frame 代码时是否遇到任何错误?
  • 我试图为您提供最简单的方法。该函数的大部分处理名称。您可以转换为矩阵,然后转换为表格,然后如果您想自己添加行名。应该很容易阅读该函数在做什么。
猜你喜欢
  • 1970-01-01
  • 2021-11-13
  • 1970-01-01
  • 1970-01-01
  • 2020-01-10
  • 2022-01-27
  • 1970-01-01
  • 2012-01-29
  • 2021-11-26
相关资源
最近更新 更多