这个重塑代码有什么问题?

时间:2013-04-30 15:56:16

标签: r dataframe reshape

我正在尝试重塑此数据框:

    ID  tag stemID  spcode  x   y   blk plotnum trt date1   dbh1    hom1    codes1  height1 canpos1 liana1  obs1    date2   dbh2    hom2    codes2  height2 canpos2 liana2  obs2    date3   dbh3    hom3    codes3  height3 canpos3 liana3  obs3    date4   dbh4    hom4    codes4  height4 canpos4 liana4  obs4    date5   dbh5    hom5    codes5  height5 canpos5 liana5  obs5    date6   dbh6    hom6    codes6  height6 canpos6 liana6  obs6    date7   dbh7    hom7    codes7  height7 canpos7 liana7  obs7    date8   dbh8    hom8    codes8  height8 canpos8 liana8  obs8    date9   dbh9    hom9    codes9  height9 canpos9 liana9  obs9
1   1   511141      acapol  21  470 NA  1   CL  1/1/1993    NA  NA  NA  NA  NA  NA  NA  1/1/1994    NA  NA  NA  NA  NA  NA  NA  1/1/1995    NA  NA  NA  NA  NA  NA  NA  1/1/1996    NA  NA  NA  NA  NA  NA  NA  1/1/1998    NA  NA  NA  NA  NA  NA  NA  1/1/2000    NA  NA  NA  NA  NA  NA  NA  1/1/2003    NA  NA  NA  NA  NA  NA  NA  1/1/2006    20.10000    NA  NA  NA  NA  NA  NA  1/1/2009    24.20   NA  NA  NA  NA  1   NA
2   2   1406    SUB acapol  1   153 NA  14  CONTROL 1/1/1993    40.7    NA  NA  NA  NA  2   NA  1/1/1994    41.30000    NA  NA  NA  NA  NA  NA  1/1/1995    NA  NA  NA  NA  NA  NA  NA  1/1/1996    NA  NA  NA  NA  NA  NA  NA  1/1/1998    NA  NA  NA  NA  NA  NA  NA  1/1/2000    NA  NA  NA  NA  NA  NA  NA  1/1/2003    NA  NA  NA  NA  NA  NA  NA  1/1/2006    NA  NA  NA  NA  NA  NA  NA  1/1/2009    NA  NA  NA  NA  NA      NA
3   3   726     acapol  23  127 NA  10  RIL 1/1/1993    67.0    NA  NA  NA  NA  3   NA  1/1/1994    NA  NA  NA  NA  NA  NA  NA  1/1/1995    NA  NA  NA  NA  NA  NA  NA  1/1/1996    NA  NA  NA  NA  NA  NA  NA  1/1/1998    NA  NA  NA  NA  NA  NA  NA  1/1/2000    NA  NA  NA  NA  NA  NA  NA  1/1/2003    NA  NA  NA  NA  NA  NA  NA  1/1/2006    NA  NA  NA  NA  NA  NA  NA  1/1/2009    NA  NA  NA  NA  NA      NA
4   4   51664       aconit  22  102 NA  18  CONTROL 1/1/1993    NA  NA  NA  NA  NA  NA  NA  1/1/1994    NA  NA  NA  NA  NA  NA  NA  1/1/1995    NA  NA  NA  NA  NA  NA  NA  1/1/1996    NA  NA  NA  NA  NA  NA  NA  1/1/1998    NA  NA  NA  NA  NA  NA  NA  1/1/2000    NA  NA  NA  NA  NA  NA  NA  1/1/2003    NA  NA  NA  NA  NA  NA  NA  1/1/2006    10.40000    NA  NA  NA  NA  NA  NA  1/1/2009    10.70   NA  NA  NA  NA      NA
5   5   5198        aconit  24  67  NA  3   CONTROL 1/1/1993    NA  NA  NA  NA  NA  NA  NA  1/1/1994    NA  NA  NA  NA  NA  NA  NA  1/1/1995    NA  NA  NA  NA  NA  NA  NA  1/1/1996    NA  NA  NA  NA  NA  NA  NA  1/1/1998    NA  NA  NA  NA  NA  NA  NA  1/1/2000    NA  NA  NA  NA  NA  NA  NA  1/1/2003    NA  NA  NA  NA  NA  NA  NA  1/1/2006    10.50000    NA  NA  NA  NA  NA  NA  1/1/2009    10.70   NA  NA  NA  NA      NA

编辑注意:这似乎是制表符分隔数据,但制表符已转换为空格,可能很难导入。海报应该已经发布了dput(人口普查)的输出。

我已经多次使用过这段代码,但是现在它给了我一个错误,虽然它应该是一个非常基本的东西,但我无法弄明白缺少什么:

census.long.coarse = 
  reshape(census, 
          varying=list(c("date1","date2","date3","date4","date5","date6","date7","date8","data9"),
                       c("dbh1","dbh2","dbh3","dbh4","dbh5","dbh6","dbh7","dbh8","dbh9")), 
          v.names = c("date","dbh"),
          direction = "long",
          times = c(1,2,3,4,5,6,7,8,9))

我得到的错误是:

Error in `[.data.frame`(data, , varying[[j]][i]) : 
  undefined columns selected

1 个答案:

答案 0 :(得分:1)

你犯了一个错字(data9而不是date9)。应该工作:

census.long.coarse = reshape(census,
          varying=list(c("date1","date2","date3","date4","date5","date6","date7","date8","date9"),
                       c("dbh1","dbh2","dbh3","dbh4","dbh5","dbh6","dbh7","dbh8","dbh9")), 
          v.names = c("date","dbh"),
          direction = "long",
          times = c(1,2,3,4,5,6,7,8,9))