微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

今天,Clarivate 刚刚对其数据库进行了一些更改,现在导出的 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 中找到。

你能帮我吗?谢谢!

解决方法

这是一种方法。

  1. 读取数据为文本行;
  2. 丢弃第一行;
  3. ag_limits_5 %>% group_by(PARAMETER) %>% summarize(across(everything(),~ median(.,na.rm = TRUE))) 删除结尾逗号;
  4. 创建文本连接;
  5. 并从连接中读取数据。

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

fl
,

真正的问题是空列没有标题。如果他们在标题行的末尾只有额外的逗号,这可能不会那么混乱。但是您也可以使用 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 填充最后一列。然后将所有列名移到左侧并删除最后一列。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。