【问题标题】:Duplicate Row Names Not Allowed不允许重复的行名
【发布时间】:2015-03-13 01:22:13
【问题描述】:

我正在尝试将一组数据加载到 R 中。它是一个用于简单统计项目的文本文档。

flights<-read.table("flights.txt")

但是,当我这样做时,我收到错误“read.table("FLIGHTS.txt") 中的错误: 不允许重复的 'row.names'"

这是文本文档的样例。

Flight  Plane_ID    Dep_Delay   Taxi_Out    Taxi_In_Arr_Delay
1   N338AA  -2  30  12  -32
1   N329AA  -1  19  13  -25
1   N319AA  -2  12  8   -26
1   N319AA  2   19  21  -6
1   N329AA  -2  18  17  5
1   N320AA  0   22  11  -15

我还为名称添加了下划线,因为我收到与每行中元素数量有关的错误。

输入 row.names = NULL 后,我得到了这个输出

 row.names Flight Plane_ID Dep_Delay Taxi_Out Taxi_In_Arr_Delay
1          1 N338AA       -2        30       12               -32
2          1 N329AA       -1        19       13               -25
3          1 N319AA       -2        12        8               -26
4          1 N319AA        2        19       21                -6

有一组额外的行号,它显示row.names,有什么办法可以摆脱这个?

【问题讨论】:

  • data.frame 不能采用重复的行名。看来1 1 1.. 被视为行名。你可以试试read.table('flights.txt', row.names=NULL)。这会将1 1 1 读取为一列,稍后您可以删除该列

标签: r


【解决方案1】:

data.frame 不能采用重复的行名。我们可以在read.table 中使用row.names=NULL,这将创建一个额外的列row.names,可以通过对数据集进行子集化来删除该列。

dat <- read.table('flights.txt', row.names=NULL)
dat <- dat[-1]

另一种选择是使用awk 将第一列替换为'' 从'flights.txt' 的第2 行开始,pipe 并使用read.table 读取

 dat1 <- read.table(pipe("awk 'NR >1{$1=\"\"}1' flights.txt"),
       header=TRUE, stringsAsFactors=FALSE)
 dat1
 #   Flight Plane_ID Dep_Delay Taxi_Out Taxi_In_Arr_Delay
 #1 N338AA       -2        30       12               -32
 #2 N329AA       -1        19       13               -25
 #3 N319AA       -2        12        8               -26
 #4 N319AA        2        19       21                -6
 #5 N329AA       -2        18       17                 5
 #6 N320AA        0        22       11               -15

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    • 2018-05-19
    • 1970-01-01
    • 2019-01-13
    • 2021-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多