'row.names'长度无效

时间:2012-12-06 01:12:08

标签: r

我正在尝试使用TraMineR(版本1.8.4)seqdef-funciton来定义一个序列对象,但我总是得到这个错误消息,这对我来说没有意义:  row.names<-.data.frame*tmp*,值=值)出错:   无效的'row.names'长度

我的代码输入是:

sample.sts <- seqdef(sample, var=c("jan2005", "feb2005", "mar2005", "apr2005", "may2005", 
"jun2005", "jul2005", "aug2005", "sep2005", "oct2005", "nov2005", "dec2005"),  
alphabet=c("Employee (full-time)", "Employee (part-time)", 
"Self-employed (full-time)", "Self-employed (part-time)", "unemployed", "Retired", 
"Student", "Other inactive", "Compulsory military service"), 
states=c("EF", "EP", "SF", "SP", "UE", "RE", "ST", "IA", "MS"), id="pidc")

数据框“样本”如下所示:

    pidc           jan2005   feb2005    ...    dec2005   sex   edufirst   age05   
--------------------------------------------------------------------------    
1.  150163920001         .         .    ...         .    1          5      62   
2.  211518110003         .         .    ...         .    2          2      17   
3.  170295160002         .         .    ...         .    2          1      47   
4.  240386550002         2         2    ...         2    2          2      50   
5.  320099920001         .         .    ...         .    1          3      38   
--------------------------------------------------------------------------    
6.  200167850001         .         .    ...         .    1          5      39  
7.  340401190002         6         6    ...         6    1          3      61  
8.  180501260002         .         .    ...         .    1          3      29  
9.  230083560001         .         .    ...         .    1          3      61  
10. 240335270002         3         3    ...         3    2          3      30  

整个输出说:

  

[!]在州代码中找到' - '字符,不建议使用   [&gt;]在序列数据中发现缺失值('NA')   [&gt;]准备3266个序列
  [&gt;]使用'%'编码空元素,使用'*'编码缺少值   [!]序列索引:1,2,3,...
  [&gt;]州编码:
        [字母] [标签] [长标签]
      1名员工(全职)EF EF
      2员工(兼职)​​EP EP
      3自雇(全职)SF SF
      4自雇(兼职)SP SP
      5个失业的UE UE
      6退休RE RE       7学生ST ST
      8其他不活跃的IA IA       9义务兵役MS MS
  [&gt;]数据集中的3266个序列
  [&gt;]最小/最大序列长度:12/12
  Fehler在row.names<-.data.frame*tmp*,值=值):
   无效的'row.names'长度

我重新标记没有“ - ”的状态后重试了它,这不会影响错误。也许,有人可以帮助我,知道导致这个错误的原因是什么?

1 个答案:

答案 0 :(得分:6)

seqdef的“id”参数应该是每个序列包含一个条目的向量(即,id向量的长度应该等于序列的数量)。尝试使用id = as.character(示例$ pid)。您也可以尝试id = sample $ pid(不带as.character)

sample.sts <- seqdef(sample, var=c("jan2005", "feb2005", "mar2005", "apr2005", "may2005", "jun2005", "jul2005", "aug2005", "sep2005", "oct2005", "nov2005", "dec2005", "jan2006", "feb2006", "mar2006", "apr2006", "may2006",  "jun2006", "jul2006", "aug2006", "sep2006", "oct2006", "nov2006", "dec2006",  "jan2007", "feb2007", "mar2007", "apr2007", "may2007",  "jun2007", "jul2007", "aug2007", "sep2007", "oct2007", "nov2007", "dec2007", "jan2008", "feb2008", "mar2008", "apr2008", "may2008", "jun2008", "jul2008", "aug2008", "sep2008", "oct2008", "nov2008", "dec2008"),  alphabet=c("Employee (full-time)", "Employee (part-time)", "Self-employed (full-time)", "Self-employed (part-time)", "unemployed", "Retired", "Student", "Other inactive", "Compulsory military service"), states=c("EF", "EP", "SF", "SP", "UE", "RE", "ST", "IA", "MS"), d=as.character(sample$pid))

数据中的状态与字母表参数之间存在一些不匹配,因为“ - ”被“。”替换。您应该更改字母表参数(尝试使用seqstatl函数查找,数据中存在标签的状态)。