当前位置:  开发笔记 > 编程语言 > 正文

从R中的多个分离的csv文件中读取数据

如何解决《从R中的多个分离的csv文件中读取数据》经验,为你挑选了2个好方法。

我正在尝试将一个csv文件读入R.问题是该文件有2个分隔符,我不知道如何将其作为3列数据框读取;即第一,第二和第一年.这是文件的样子示例:

[Alin Deutsch, Mary F. Fernandez, 1998],  
[Alin Deutsch, Daniela Florescu, 1998],

我已尝试fread()使用sep="["和的功能sep2=",",但它不起作用,R只是读取它作为1列向量的行谢谢



1> scoa..:

您可以阅读该文件,sep=","然后删除额外的括号:

df <- read.csv(file = textConnection("[Alin Deutsch, Mary F. Fernandez, 1998],  
[Alin Deutsch, Daniela Florescu, 1998],"),stringsAsFactors=FALSE,head=FALSE)

df <- df[,-4]

df$V1 <- gsub("\\[","",df$V1)
df$V3 <- gsub("\\]","",df$V3)

names(df) <- c("first","second","year")
df

产量

         first             second  year
1 Alin Deutsch  Mary F. Fernandez  1998
2 Alin Deutsch   Daniela Florescu  1998



2> G. Grothendi..:

1)read.table/sub使用sep = ","和读取它comment.char = "]".这将拆分领域,摆脱尾随的]后一切,然后我们可以直接删除[V1使用sub:

Lines <- "[Alin Deutsch, Mary F. Fernandez, 1998],  
[Alin Deutsch, Daniela Florescu, 1998],"

DF <- read.table(text = Lines, sep = ",", comment.char = "]", as.is = TRUE,
          strip.white = TRUE, # might not need this one
          col.names = c("Name1", "Name2", "Year"))
DF <- transform(DF, Name1 = sub("[", "", Name1, fixed = TRUE))

赠送:

> DF
         Name1             Name2 Year
1 Alin Deutsch Mary F. Fernandez 1998
2 Alin Deutsch  Daniela Florescu 1998

2)read.pattern 另一种可能性read.pattern在gsubfn中使用.这种模式假定每行以[,有三个逗号开头,最后一个有一个]开头.这与问题中的内容相对应,但如果不是这种情况,则需要更改正则表达式.

library(gsubfn)

read.pattern(text = Lines, pattern = ".(.*?),(.*?),(.*?).,", as.is = TRUE,
        strip.white = TRUE, # might not need this one
        col.names = c("Name1", "Name2", "Year"))

给予同样的.

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有