我编写了一个R脚本来对期刊引文报告数据进行科学分析,在过去的几年中我一直在使用和更新这些数据。
今天,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中获得。
你能帮帮我吗?谢谢!
发布于 2021-07-02 20:57:44
真正的问题是空列没有标题。如果他们在标题行的末尾有额外的逗号,这可能就不会那么混乱了。但是,您也可以使用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。然后将所有列名移到左边,然后删除最后一列。
发布于 2021-07-02 20:01:31
这里有个办法。
sub删除结尾逗号;变量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)https://stackoverflow.com/questions/68230571
复制相似问题