美文网首页
R软件批量读入文件数据

R软件批量读入文件数据

作者: PersonaeYxxx | 来源:发表于2018-07-25 18:15 被阅读0次

    以csv文件为例。

    一、简单的批量读入

    批量读入文件一般使用dir(...),通过dir(...)可是获取该路径下所有的文件名。
    如,现在需要批量读入C:\Users\Administrator\Desktop\test文件夹下所有的文件。

    path = "C:\\Users\\Administrator\\Desktop\\test"
    fileName = dir(path)
    for(k in 19:length(fileName)){
      data = read.csv(file = paste(path,fileName[k],sep = "\\"),
                      header = T,stringsAsFactors = F)
    }
    

    或用apply代替for循环

    path <- "C:\\Users\\Administrator\\Desktop\\test" 
    fileNames <- dir(path) 
    filePath <- sapply(fileNames, function(x){ 
                     paste(path,x,sep='\\')}) 
    data <- lapply(filePath, function(x){
                 read.csv(x, header=T)})  
    

    注意,由于第二种方法使用了lapply(...),因此得到的数据为list形式。

    二、有选择的批量读入

    利用正则表达式对读入的文件格式进行选择。
    如在test文件夹中有多种格式的文件,但我们只需要读入YYYYMMDD形式的csv文件。
    只需要将上面代码中的dir(...)中的pattern做出限制。

    fileName = dir(path,pattern = '[0-9]{4}[0-9]{2}[0-9]{2}.csv')
    

    下面是一些正则表达式的规则,来源于网络,侵删。

    正则表达式 字符 解释
    中间元字符 [\b] 回退(并删除)一个字符(backspace)
    \f 换页符
    \n 换行符
    \r 回车符
    \t 制表符(tab)
    \v 垂直制表符
    匹配数字与非数字 \d 任何一个数字字符,等价于[0-9]
    \D 任何一个非数字字符,等价于^[0-9]
    匹配字母\非字母与数字 \w 任何一个字母数字字符(大小写均可以)或下划线字符(等价于[a-zA-Z0-9])
    \W 任何一个非字母数字或下划线字符(等价于[^a-zA-Z0-9])
    匹配空白字符 \s 任何一个空白字符(等价于[\f\n\r\t\v])
    \S 任何一个非空白字符(等价于[^\f\n\r\t\v])
    POSIX字符类 [:alnum:] 任何一个字母或数字(等价于[a-ZA-Z0-9])
    [:alpha:] 任何一个字母(等价于[a-ZA-Z])
    [:blank:] 空格或制表符(等价于[\t ]) 注:t后面有一个空格
    [:cntrl:] ASCII控制字符(ASCII 0到31,再加上ASCII 127)
    [:digit:] 任何一个数字(等价于[0-9])
    [:graph:] 和[:print:]一样,但不包括空格
    [:lower:] 任何一个小写字母(等价于[a-z])
    [:print:] 任何一个可打印字符
    [:punct:] 既不属于[:alnum:],也不属于[:cntrl:]的任何一个字符
    [:space:] 任何一个空格字符,包括空格(等价于[f\n\r\t\v ] 注:v后面有一个空格
    [:upper:] 任何一个大写字母(等价于[A-Z])
    [:xdigit:] 任何一个十六进制数字(等价于[a-fA-F0-9])
    其他 . 可以匹配任何单个的字符字母数字甚至.字符本身。同一个正则表达式允许使用多个.字符。但不能匹配换行
    \\ 转义字符,如果要匹配就要写成“\(\)”
    | 表示可选项,即 | 前后的表达式任选一个
    ^ 取非匹配
    $ 放在句尾,表示一行字符串的结束
    () 提取匹配的字符串,(\s*)表示连续空格的字符串
    [] 选择方括号中的任意一个(如[0-2]和[012]完全等价,[Rr]负责匹配字母R和r)
    {} 前面的字符或表达式的重复次数。如{5,12}表示重复的次数不能小于5,不能多于12,否则都不匹配
    * 匹配零个或任意多个字符或字符集合,也可以没有匹配
    + 匹配一个或多个字符,至少匹配一次
    ? 匹配零个或一个字符

    相关文章

      网友评论

          本文标题:R软件批量读入文件数据

          本文链接:https://www.haomeiwen.com/subject/mpkmmftx.html