登录
首页精彩阅读R语言-批量读取数据文件以及提取字符串中的数字
R语言-批量读取数据文件以及提取字符串中的数字
2018-06-26
收藏

R语言-批量读取数据文件以及提取字符串中的数字

#第一部分

#先将当前文件夹下的所有以csv结尾的文件名读进来

filelist <- list.files(pattern=".*.csv")

#文件个数
m<-length(filelist)

#按照文件名逐个读入数据,得到数据列表
datalist <- lapply(filelist, function(x) read.csv(x,header=F,stringsAsFactors=F)) 


#第二部分

library(stringr)#没装的请先安装

cha1<-c("a1","b23","c4","d56","e","f4")#这是6个字符串,每个字符串里面都包含数字,考虑如何把数字提取出来

col1<-str_extract_all(cha1,"\\d")#得到字符串列表,每个元素对应每个字符串的数字,但是不是你想象的那样

#具体形式是这样的:如23,得到的是"2" "3",所以该怎样把它变成我们想要的数字23是个问题,解决方法如下:

  i<-1
  while(i<=length(col1)){
    if(length(col1[[i]])==0) col1<-col1[-i] else i<-i+1#这一步是考虑把没有数字的字符串对应的列表元素删掉,比如说"e"
  } 
  col11<-numeric(length(col1))
  for(i in 1:length(col1)){
    l1<-length(col1[[i]])
    l11<-c()
    for(j in 1:l1)
     l11<-paste(l11,col1[[i]][j],sep="")#将列表的每个元素连接起来,比如"2" "3"就变成了字符串"23"
    col11[i]<-as.numeric(l11)#再将链接好的字符串进行数值化
  }  

col11<-col11[!duplicated(col11)]#有的数字在处理之后,即将字母去掉之后会有所重复,这步是向量去重处理(不需要去重的请忽略哈)

#补充两个个函数:
#1.删除字符串中的特定字符
gsub(a,b,c):将字符串c中的a字符用b字符进行替换,例如:

gsub(" ","","Lin hai")#这样可以删除字符串中的空格

#2.读取excel数据时指定行和列进行读取
library(data.table)
data1 <- fread("数据.csv", skip=1, nrows=100, select=c(1:50),data.table=F,header=F) #读取前五十列,前一百行
#其中skip是起始行,nrows是终止行,select是所要读取的列号(也可以写成列名,如select=c("X1", "X2"),表示读取列名为X1,X2的变量)


数据分析咨询请扫描二维码

客服在线
立即咨询