在R中使用列名称进行矩阵堆叠

时间:2012-03-06 15:28:12

标签: r

我发现许多线程与列名称的矩阵堆叠相关,但是没有任何信息可以帮助解决这个问题。 我有一个像这样的矩阵

   Lcover   
County        8         9   
  53009 868.935 1171.0050  
  53055      NA  414.9733  
  53057      NA  276.5450   
  53073 706.700        NA 

我想创建一个像这样的数据框

County Lcover Value  
53009   8     868.935  
53009   9    1171.0050   
53055   9     414.9733  
53057   9     276.5450  
53073   8     706.700

有人会建议我,我该怎么做?

提前致谢。

戴文

1 个答案:

答案 0 :(得分:0)

Andrie指出,melt()功能使这简单易行:

x <- read.table(text = "County        8         9   
  53009 868.935 1171.0050  
  53055      NA  414.9733  
  53057      NA  276.5450   
  53073 706.700        NA ", header = TRUE)

require(reshape2)
melt(x, id.vars = "County", na.rm=TRUE)

  County variable     value
1  53009       X8  868.9350
4  53073       X8  706.7000
5  53009       X9 1171.0050
6  53055       X9  414.9733
7  53057       X9  276.5450

“X”出现在列的前面,因为R尝试使用make.names()函数创建有效的列名。在阅读/创建表格时,您可以使用check.names = FALSE禁用该功能。或者只使用gsub("X","", variable)从结果列中删除X.如果要在已熔化的data.frame中保留NA值,请更改na.rm = FALSE函数中的melt()