首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将带有最后一个空列的CSV导入R?

如何将带有最后一个空列的CSV导入R?
EN

Stack Overflow用户
提问于 2021-07-02 19:45:46
回答 2查看 745关注 0票数 0

我编写了一个R脚本来对期刊引文报告数据进行科学分析,在过去的几年中我一直在使用和更新这些数据。

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

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

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

但是,是否有一种方法可以使用base R将此删除添加到我的脚本中

我剧本的开头是:

代码语言:javascript
复制
    jcreco = read.csv("data/jcr ecology 2020.csv",
    na = "n/a", skip = 1, header = T)

从JCR下载的原始CSV文件可以在我的Dropbox中获得。

你能帮帮我吗?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-02 20:57:44

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

代码语言:javascript
复制
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。然后将所有列名移到左边,然后删除最后一列。

票数 1
EN

Stack Overflow用户

发布于 2021-07-02 20:01:31

这里有个办法。

  1. 将数据读入文本行;
  2. 丢弃第一行;
  3. sub删除结尾逗号;
  4. 创建文本连接;
  5. 并读取连接中的数据。

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

代码语言:javascript
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68230571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档