【问题标题】:Error in `row.names<-.data.frame using mlogit in R language`row.names<-.data.frame 在 R 语言中使用 mlogit 时出错
【发布时间】:2014-04-21 21:47:39
【问题描述】:

这是我执行多项线性回归的步骤。

> z<-read.table("2008 Racedata.txt", header=TRUE, sep="\t", row.names=NULL)

> head(z)

     datekey raceno horseno place winner draw winodds log_odds jwt  hwt
1 2008091501      1       8     1      1    2    12.0 2.484907 128 1170
2 2008091501      1      11     2      0    3     8.6 2.151762 123 1135
3 2008091501      1       6     3      0    5     7.0 1.945910 127 1114
4 2008091501      1      12     4      0   10    23.0 3.135494 123 1018
5 2008091501      1      14     5      0    4    11.0 2.397895 113 1027
6 2008091501      1       5     6      0   14    50.0 3.912023 131  972

> x<-mlogit.data(z,choice="winner",shape="long",id.var="datekey",alt.var="horseno")

Error in `row.names<-.data.frame`(`*tmp*`, value = c("1.8", "1.11", "1.6",  : 
  duplicate 'row.names' are not allowed

In addition: Warning message:
non-unique values when setting 'row.names': ‘10.2’, ‘10.4’, ‘10.8’,
‘100.7’, ‘101.12’, ‘102.1’, ‘102.3’, ‘103.2’, ‘103.4’, 
‘103.6’, ‘104.12’, ‘104.3’, ‘104.9’, ‘105.1’, ‘105.5’, 
‘105.6’, ‘105.8’, ‘106.11’, ‘106.12’, ‘106.13’, ‘106.7’, 
‘107.10’, ‘107.14’, ‘107.3’, ‘108.12’, ‘108.2’, ‘108.6’, 
‘108.9’, ‘109.1’, ‘109.14’, ‘109.7’, ‘11.12’, ‘11.5’, 
‘11.9’, ‘110.2’, ‘110.3’, ‘110.4’, ‘110.9’, ‘111.1’, 
‘111.7’, ‘112.12’, ‘112.3’, ‘112.6’, ‘112.8’, ‘113.10’, 
‘113.13’, ‘113.7’, ‘114.12’, ‘114.2’, ‘114.9’, ‘115.10’, 
‘115.13’, ‘115.5’, ‘116.11’, ‘116.6’, ‘117.14’, ‘117.3’, 
‘117.7’, ‘118.1’, ‘118.13’, ‘118.2’, ‘118.9’, ‘119.10’, 
‘119.5’, ‘119.6’, ‘119.8’, ‘12.1’, ‘12.10’, ‘12.3’, 
‚Äò12.6‚Äô, ‚Äò120.2‚Äô, ‚Äò120.4‚Äô, ‚Äò120.7‚ [... truncated] 
> 

我在这里缺少什么步骤?为什么 row.names 中有重复项?

谢谢, 沃尔特

【问题讨论】:

  • 您希望观众了解的知识之一是mlogit.data 函数的包名称。 (我们中的一些人已经厌倦了寻找应该提供的东西。)
  • 抱歉,我忘了包含包调用:>library(mlogit) 我没有意识到不止一个。

标签: r duplicates syntax-error


【解决方案1】:

两个问题。

您似乎在编码方面遇到了一些问题,因为我们在该错误消息中看到了很多变音符号和重音符号。此外,我想知道该 datekey 列是否已转换为因子类?

在这种情况下,它指的是新对象 x 的 row.names 属性的构造错误。如果你这样做:

 with( z, table( datekey, horseno) )

...您可能会在同一天看到一匹马有多个条目。

实际上没有重复的 datekey x horseno 组合。更改为 horseno 和 datekey 的因子,然后将“long”参数切换为“wide”会产生无错误的结果,结果如下:

z$datekey <- as.character(z$datekey)
z$horseno <- as.character(z$horseno)
x<-mlogit.data(z,choice="winner",shape="wide",id.var="datekey",alt.var="horseno")
str(x)
#----------
Classes ‘mlogit.data’ and 'data.frame': 18312 obs. of  11 variables:
 $ datekey : Factor w/ 733 levels "2008091501","2008091502",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ raceno  : int  1 1 1 1 1 1 1 1 1 1 ...
 $ horseno : chr  "0" "1" "0" "1" ...
 $ place   : int  1 1 2 2 3 3 4 4 5 5 ...
 $ winner  : logi  FALSE TRUE TRUE FALSE TRUE FALSE ...
 $ draw    : int  2 2 3 3 5 5 10 10 4 4 ...
 $ winodds : num  12 12 8.6 8.6 7 7 23 23 11 11 ...
 $ log_odds: num  2.48 2.48 2.15 2.15 1.95 ...
 $ jwt     : int  128 128 123 123 127 127 123 123 113 113 ...
 $ hwt     : int  1170 1170 1135 1135 1114 1114 1018 1018 1027 1027 ...
 $ chid    : num  1 1 2 2 3 3 4 4 5 5 ...
 - attr(*, "index")='data.frame':   18312 obs. of  3 variables:
  ..$ chid: Factor w/ 9156 levels "1","2","3","4",..: 1 1 2 2 3 3 4 4 5 5 ...
  ..$ alt : Factor w/ 2 levels "0","1": 1 2 1 2 1 2 1 2 1 2 ...
  ..$ id  : Factor w/ 733 levels "2008091501","2008091502",..: 1 1 1 1 1 1 1 1 1 1 ...
 - attr(*, "choice")= chr "winner"

【讨论】:

  • 数据从 Mac 上的 Excel 导出为制表符分隔的文本文件。 Excel 文件源自 Windows 机器。这些文件来自 CXWong 的一本书,名为 Precision。
  • 有什么方法可以发布指向 tsv 文件的链接吗?
猜你喜欢
  • 2018-11-11
  • 1970-01-01
  • 2014-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-13
  • 1970-01-01
  • 2022-07-20
相关资源
最近更新 更多