我有一个像下面这样的表格,我试图以第一列成为索引的方式转换它,即我可以使用类似条形图的函数。
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作为ML轴和X轴之间的点作为BGT
答案 0 :(得分:2)
要获取索引,您必须设置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")
}