【问题标题】:How to import a CSV with a last empty column into R?如何将带有最后一个空列的 CSV 导入 R?
【发布时间】:2021-09-14 17:25:20
【问题描述】:

我编写了一个 R 脚本来对过去几年一直在使用和更新的 Journal Citation Report 数据 (JCR) 进行一些科学计量分析。

今天,科睿唯安刚刚对其数据库进行了一些更改,现在导出的 CSV 文件包含最后一个空列,这破坏了我的脚本。由于最后一个空列,read.csv 自动假定第一列包含行名。

和以前一样,还有一个第一行无用的行,它在我的脚本中用skip = 1自动删除。

这种“空列情况”的一个简单解决方案是手动删除 Excel 中的最后一列,然后像往常一样继续执行我的脚本。

但是,有没有办法使用 base R 将此删除添加到我的脚本中?

我的脚本的开头是:

    jcreco = read.csv("data/jcr ecology 2020.csv",
    na = "n/a", skip = 1, header = T)

从 JCR 下载的原始 CSV 文件可在我的Dropbox 中找到。

你能帮帮我吗?谢谢!

【问题讨论】:

    标签: r dataframe csv read.csv citations


    【解决方案1】:

    真正的问题是空列没有标题。如果他们只在标题行末尾有额外的逗号,这可能不会那么混乱。但是您也可以使用fill=TRUE 进行一些列改组。例如

    dd <- read.table("~/../Downloads/jcr ecology 2020.csv", sep=",", 
       skip=2, fill=T, header=T, row.names=NULL)
    names(dd)[-ncol(dd)] <- names(dd)[-1]
    dd <- dd[,-ncol(dd)] 
    

    这会读入数据,但会将行名放在 data.frame 中,并用 NA 填充最后一列。然后将所有列名移到左侧并删除最后一列。

    【讨论】:

    • 非常感谢,它就像一个魅力!
    • 这是分析的简短摘要,使用在您的帮助下更新的脚本:rpubs.com/marmello77/677911
    【解决方案2】:

    这是一种方法。

    1. 以文本行的形式读取数据;
    2. 丢弃第一行;
    3. sub去掉结尾逗号;
    4. 创建文本连接;
    5. 并从连接中读取数据。

    变量fl 保存文件,在我的磁盘上我必须设置目录。

    fl <- "jcr_ecology_2020.csv"
    txt <- readLines(fl)
    txt <- txt[-1]
    txt <- sub(",$", "", txt)
    con <- textConnection(txt)
    df1 <- read.csv(con)
    close(con)
    head(df1)
    

    【讨论】:

      猜你喜欢
      • 2011-07-08
      • 2015-03-12
      • 1970-01-01
      • 2021-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多