R 从txt文件文件夹生成频率表数据帧
我试图从一个文件夹中的单个文本文件中的一列创建一个频率表,并将其放入一个漂亮的数据框中 我有一个包含1000个文件的文件夹。1000个文本文件中的每一个都是tab del UTF-8(或者他们说,编码一直是个问题),有61列,行数从35到500不等 在每个文件中,第43列是一年。我想要的结束状态是一个数据框,其中数据集中显示的每一年都有一列,1000个文件中的每一个都有一行,该年在该文件的每个单元格中出现的总次数(换句话说,每年出现在第43列中的次数) 我有这个功能:R 从txt文件文件夹生成频率表数据帧,r,plyr,R,Plyr,我试图从一个文件夹中的单个文本文件中的一列创建一个频率表,并将其放入一个漂亮的数据框中 我有一个包含1000个文件的文件夹。1000个文本文件中的每一个都是tab del UTF-8(或者他们说,编码一直是个问题),有61列,行数从35到500不等 在每个文件中,第43列是一年。我想要的结束状态是一个数据框,其中数据集中显示的每一年都有一列,1000个文件中的每一个都有一行,该年在该文件的每个单元格中出现的总次数(换句话说,每年出现在第43列中的次数) 我有这个功能: findCY<-
findCY<-function(savedfile){
text <- read.delim(savedfile, header=FALSE, sep="\t",colClasses=mycolClasses, quote="", na.strings="", encoding="UTF-8-BOM")
cyvec<- as.numeric(text$V43[2:(length(text$V43))])
cyvec<- sort(cyvec, decreasing=FALSE)
labelcyvec<-c(savedfile,cyvec)
return(labelcyvec)
}
findCY更改函数以输出数据帧列表,并使用lapply确实有效,则不需要熔化,只需铸造:
findCY<-function(savedfile){
text <- read.delim(savedfile, header=FALSE, sep="\t",colClasses=mycolClasses, quote="", na.strings="", encoding="UTF-8-BOM")
cyvec<- as.numeric(text$V43[2:(length(text$V43))])
cyvec<- sort(cyvec, decreasing=FALSE)
labelcyvec<-data.frame(savedfile,cyvec)
print(c(savedfile,"ok"))
return(labelcyvec)
}
CYall<- ldply(filenames, findCY)
CYall.cast<- dcast(CYall, savedfile~cyvec, fun.aggregate=length)
查找如何使用lappy
而不是ldply
?还是错误吗?我可以用Lappy得到一个列表。我现在正在考虑这个问题。我也尝试过一些事情:没有运气
test<- ldply(filenames[600:605], findCY)
test.melt<-melt(test,id.vars="V1")
test.cast<-dcast(test.melt, V1~value, fun.aggregate=length)
findCY<-function(savedfile){
text <- read.delim(savedfile, header=FALSE, sep="\t",colClasses=mycolClasses, quote="", na.strings="", encoding="UTF-8-BOM")
cyvec<- as.numeric(text$V43[2:(length(text$V43))])
cyvec<- sort(cyvec, decreasing=FALSE)
labelcyvec<-data.frame(savedfile,cyvec)
print(c(savedfile,"ok"))
return(labelcyvec)
}
CYall<- ldply(filenames, findCY)
CYall.cast<- dcast(CYall, savedfile~cyvec, fun.aggregate=length)