4

我正在尝试使用 TraMineR 的(版本 1.8.4)seqdef-funciton 来定义序列对象,但我总是收到这个对我来说毫无意义的错误消息:Error in row.names<-.data.frame( *tmp*, value = value) : invalid '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  

整个输出说:

[!] 在州代码中发现 '-' 字符,不推荐
[>] 在序列数据中发现缺失值 ('NA')
[>] 准备 3266 个序列
[>] 用 '%' 编码 void 元素,用 '* 编码缺失值'
[!] 序列索引:1,2,3,...
[>] 状态编码:
[字母] [标签] [长标签]
1 员工(全职) EF EF
2 员工(兼职)​​ EP
3 个体经营者(全职) SF
4 个体经营者(兼职) SP SP
5 失业 UE UE
6 退休 RE RE
7 学生 ST ST
8 其他不活跃的 IA IA
9 义务兵役 MS MS
[>] 数据集中的 3266 个序列
[>] 最小/最大序列长度:12/12
Fehler in row.names<-.data.frame( *tmp*, value = value) :
无效的“row.names”长度

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

4

1 回答 1

6

seqdef 的“id”参数应该是一个向量,每个序列包含一个条目(即,id 向量的长度应该等于序列的数量)。尝试使用 id=as.character(sample$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 函数找出数据中存在哪些状态标签)。

于 2012-12-06T09:23:30.243 回答