【问题标题】:unable to get column names when using skip along with read.csv使用 skip 和 read.csv 时无法获取列名
【发布时间】:2015-01-18 06:21:18
【问题描述】:

在从 csv 文件读入我的数据帧之前,我使用 read.csv 中的跳过选项跳过了几行。但是,当我在执行此操作时执行名称(数据框)时,我会丢失列名并获得一些随机字符串作为列名。为什么会这样?

> mydf = read.csv("mycsvfile.csv",skip=100)
> names(mydf)
[1] "X2297256" "X3"

没有跳过选项,它工作正常

> mydf = read.csv("mycsvfile.csv")
> names(mydf)
[1] "col1" "col2"      

【问题讨论】:

    标签: r rstudio


    【解决方案1】:

    如果您跳过文件中的行,则会跳过整行,因此如果您的标题位于第一行并且您跳过了 100 行,则会跳过标题行。如果您想跳过文件的一部分并仍然保留标题,则需要单独阅读它们

    headers <- names(read.csv("mycsvfile.csv",nrows=1))
    mydf <- read.csv("mycsvfile.csv", header=F, col.names=headers, skip=100)
    

    【讨论】:

    • 感谢它有效。是否可以提一组skip条件,比如skip(1, 20-40, 62-78)?
    • 在 cmets 中提出不同的问题并不是一个好主意,因为其他人可能会更好地回答这个问题。但是,如果您阅读文档,它看起来不像。您只需阅读整个文件并使用索引来提取您想要的行。或者使用readLines(),然后通过索引(或其他方式)进行子集化,然后发送到read.table()
    【解决方案2】:

    没有必要单独读入标题。您可以通过在数据帧上使用负索引在一行中执行此操作,其中负索引表示“保留除负索引(范围)之外的所有行”。

    所以如果你想保留标题然后跳过前 N 行你只需要这样做:

    mydf<-read.csv("mycsvfile.csv",header=T)[-1:-N,]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多