R语言程序

来源:互联网 发布:如何用微信推广淘宝客 编辑:程序博客网 时间:2024/05/22 12:38

今天相应R语言处理一些数据,结果忘记的差不多了,回头去找以前写的程序,找了半天才找到。把以前写的一部分程序放在这,以便以后用到一些常用的语句的时候做个参考!

文件translate_col_row.R

#功能:就是给所有文件加上类别。#1、遍历video_frame_data文件夹下的所有文件#2、将行和列变换一下,然后保存到video_frame_data_trans下setwd("D:/getandcleandata/")dir.create("video_frame_data_trans")name <- "video_frame_data"filenames <- list.files(name)#所有的文件名#处理每一个文件for(filename in filenames){result <- 0path <- paste("./video_frame_data/",filename,sep="")#读取每一个文件的数据data <- read.table(path)trans <- t(data)filename1 <- paste("./","video_frame_data_trans","/",filename,sep="")#文件名write.table(trans,filename1,row.names=FALSE,col.names=FALSE)#保存}
文件skeleton_angle.R

#求每两个关节点之间的方向#将all_files_process2中的数据弄成一行一行的setwd("D:/getandcleandata/")dir.create("anglefile")name <- "all_files_process2"filenames <- list.files(name)for(filename in filenames){result <- 0path <- paste("./all_files_process2/",filename,sep="")#读取每一个文件的数据data <- read.table(path)nrownum <- floor(ncol(data)/3)#将数据拆成每三个数(x,y,z)一行for(n in 1:nrownum){data <- as.matrix(data)rowdata = data[(3*n-1):(1+3*n)]result = rbind(result,rowdata)}result <- result[-1,]#去除第一行为0的数据extractdata <- 0subdata <- 0for(x in 0:4){a <- result[1+x*20,]extractdata <- rbind(extractdata,a)b <- result[4+x*20,]extractdata <- rbind(extractdata,b)c <- result[8+x*20,]extractdata <- rbind(extractdata,c)d <- result[12+x*20,]extractdata <- rbind(extractdata,d)e <- result[16+x*20,]extractdata <- rbind(extractdata,e)f <- result[20+x*20,]extractdata <- rbind(extractdata,f)#数据做差#subdata <- rbind(subdata,b-d)#subdata <- rbind(subdata,b-c)#subdata <- rbind(subdata,a-d)#subdata <- rbind(subdata,a-c)#subdata <- rbind(subdata,e-c)#subdata <- rbind(subdata,f-d)}#subdata <- subdata[-1,]extractdata <- extractdata[-1,]#rrr <- rbind(extractdata,subdata)rrr  <- extractdatafinal <- data[1]for(i in 1:30){for(j in rrr[i,]){final <- cbind(final,j)}}filename1 <- paste("./","keyframe","/",filename,sep="")#文件名write.table(final,filename1,row.names=FALSE,col.names=FALSE)#保存}
文件skeleton.R

#设置文件操作路径setwd("G:/刘拴朋/MSRDailyActivity3D (MSR Daily Activity 3D dataset/")#提取该路径下某个文件夹下的所有文件#txtfiles <- NULLfor(i in 1:8){i <- as.character(i)name <- "MSRDailyAct3D_pack"names<-paste(name,i,sep="")filenames = list.files(names)#将文件夹下的所有文件放到filenames中#创建process_i的文件夹dir.create(paste("process_",i,sep=""))for(filename in filenames){if(grepl(".txt", filename))#判断后缀名中是否包含txt{dir = paste("./",names,"/",filename,sep="")#连接#txtfiles <- c(txtfiles,filename)#多余了,提取出来就处理就行了sa<-NULL#保存为1的数据sb<-NULL#保存为0的数据data<-read.table(dir,na.strings="NA",skip=2,fill=TRUE)result<-na.omit(data) #去除有NA值的行tempA<-which(result$V4==1)#将第四列中为1的行号保存到tempA中tempB<-which(result$V4==0) #将第四列中为0的行号保存到tempB中for(z in tempA){    a<-result[z,]    sa<-rbind(a,sa)#将为1的每一行的数据保存到sa中}for(z in tempB){    a<-result[z,]    sb<-rbind(a,sb)#将为0的每一行的数据保存到sb中}#将处理后的数据,保存到process_*文件夹内file1 <- sub(pattern="skeleton", replacement="skeleton1", dir)file1<- sub(pattern = "MSRDailyAct3D_pack",replacement="process_",file1)file0 <- sub(pattern="skeleton", replacement="skeleton0", dir)file0<- sub(pattern = "MSRDailyAct3D_pack",replacement="process_",file0)write.table(sa,file1,row.names=FALSE,col.names = FALSE)write.table(sb,file0,row.names=FALSE,col.names = FALSE)}}}
文件file_operator.R
#功能:将工作目录"G:/刘拴朋/MSRDailyActivity3D (MSR Daily Activity 3D dataset/"#下的process_1--》process_8文件夹中的文件中,文件名中含有skeleton.txt的文件提取到#all_file_1--》all_file_8中。setwd("G:/刘拴朋/MSRDailyActivity3D (MSR Daily Activity 3D dataset/")#功能:将0和1的文件分离,将1的文件(我们所要的提取出来,到all_file_i文件夹中)for(i in 1:8){i <- as.character(i)name <- "process_"names<-paste(name,i,sep="")filenames = list.files(names)#将文件夹下的所有文件放到filenames中#在process_i的文件夹下在创建文件夹all_filepathsub <- paste("process_",i,sep="")path = paste("./",pathsub,"/","all_file_",i,sep="")dir.create(path)#pathsub <- paste("./",pathsub1,"/","all_file_",i,sep="")for(filename in filenames){if(grepl("skeleton1.txt", filename))#判断后缀名中是否包含skeleton1{#将其复制出来filename1 <- paste("./",pathsub,"/",filename,sep="") file.copy(filename1,path)#将其复制到all_files文件夹内#print(x)#x<-x+1}}}
文件file_operator1.R

#功能:将上一个文件中的all_file_i文件夹中的内容放到all_files中#设置工作路径setwd("D:/getandcleandata/")dir.create("all_files")#将每个文件夹中的所有文件都复制到all_files文件夹中for(i in 1:8){i <- as.character(i)name <- "all_file_"names<-paste(name,i,sep="")filenames = list.files(names)#将文件夹下的所有文件放到filenames中for(filename in filenames){#将其复制出来filename1 <- paste("./",names,"/",filename,sep="")file.copy(filename1,"all_files")#将其复制到all_files文件夹内}}
文件file_operator2.R

#功能:就是给所有文件加上类别。#1、遍历all_files一个文件下的所有文件#2、将一个文件中的多行数据合并成一行,并在每一行的开头设定其类别0、1、2、3、4、5、6....#3、对多个文件进行操作setwd("D:/getandcleandata/")dir.create("all_files_process2")name <- "all_files1"filenames <- list.files(name)for(filename in filenames){result <- 0path <- paste("./all_files1/",filename,sep="")#读取每一个文件的数据data <- read.table(path)numrow <- nrow(data)frames <- numrow/20#一段视频的帧数例如:129帧interval <- (frames - frames %% 5)/5 #25for(x in 0:4){if(x == 0){#提取第一帧的数据for(n in 1:20){result<-cbind(result,data[n,])}}else{beginframe = interval*x #25 50 75 100beginrow   = beginframe*20for(n in 1:20){result<-cbind(result,data[beginrow+n,])}}}typenum <- substr(filename,2,3)result[,1] = as.numeric(typenum) filename1 <- paste("./","all_files_process2","/",filename,sep="")#文件名write.table(result,filename1,row.names=FALSE,col.names=FALSE)#保存}

文件file_operator3.R

#功能:合并result文件夹中的文件setwd("D:/getandcleandata/")name <- "result"filenames <- list.files(name)for(filename in filenames){#存放每一个文件的处理结果result <- 0path <- paste("./result/",filename,sep="")data <- read.table(path)typenum <- substr(filename,2,3)result[,1] = as.numeric(typenum) filename1 <- paste("./","all_files_process","/",filename,sep="")#文件名write.table(result,filename1,row.names=FALSE,col.names=FALSE)#保存}#将复制出来的file_files文件夹中的文件整合到一个txt文件中#cat("", file="all_contents.txt")#创建一个文件all_contents.txt,存放所有骨架内容#将复制出来的file_files文件夹中的文件整合到一个txt文件中#cat("", file="all_contents.txt")#创建一个文件all_contents.txt,存放所有骨架内容

文件file_operator4.R

#去掉文件中的1的列setwd("D:/getandcleandata/")dir.create("all_files1")name <- "all_files"filenames <- list.files(name)for(filename in filenames){path <- paste("./all_files/",filename,sep="")#读取每一个文件的数据data <- read.table(path)data <- data[,-4]filename1 <- paste("./","all_files1","/",filename,sep="")#文件名write.table(data,filename1,row.names=FALSE,col.names=FALSE)#保存}

文件file_operator5.R

#功能:就是给所有文件加上类别。#1、遍历all_files1一个文件下的所有文件#2、将一个文件中的多行数据合并成一行,并在每一行的开头设定其类别0、1、2、3、4、5、6....#3、对多个文件进行操作setwd("D:/getandcleandata/")dir.create("all_files_process3")name <- "all_files1"filenames <- list.files(name)for(filename in filenames){#存放每一个文件的处理结果result <- 0path <- paste("./all_files1/",filename,sep="")data <- read.table(path)numrow <- nrow(data)for(x in 1:numrow){result<-cbind(result,data[x,])}typenum <- substr(filename,2,3)result[,1] = as.numeric(typenum) filename1 <- paste("./","all_files_process3","/",filename,sep="")#文件名write.table(result,filename1,row.names=FALSE,col.names=FALSE)#保存}

文件file_operator6.R

#关键帧之间做差作为特征setwd("D:/getandcleandata/")dir.create("all_files_process4")name <- "all_files_process2"filenames <- list.files(name)for(filename in filenames){path <- paste("./all_files_process2/",filename,sep="")#读取每一个文件的数据data <- read.table(path)data<-data[1,]for(x in 1:241){data[300+x+1] <- data[x+59+1]-data[x+1]}filename1 <- paste("./","all_files_process4","/",filename,sep="")#文件名write.table(data,filename1,row.names=FALSE,col.names=FALSE)#保存print(ncol(data))}

文件file_operator7.R

#将all_files_process2中的数据弄成一行一行的setwd("D:/getandcleandata/")dir.create("keyframe")name <- "all_files_process2"filenames <- list.files(name)for(filename in filenames){result <- 0path <- paste("./all_files_process2/",filename,sep="")#读取每一个文件的数据data <- read.table(path)nrownum <- floor(ncol(data)/3)#将数据拆成每三个数(x,y,z)一行for(n in 1:nrownum){data <- as.matrix(data)rowdata = data[(3*n-1):(1+3*n)]result = rbind(result,rowdata)}result <- result[-1,]#去除第一行为0的数据extractdata <- 0subdata <- 0for(x in 0:4){a <- result[1+x*20,]extractdata <- rbind(extractdata,a)b <- result[4+x*20,]extractdata <- rbind(extractdata,b)c <- result[8+x*20,]extractdata <- rbind(extractdata,c)d <- result[12+x*20,]extractdata <- rbind(extractdata,d)e <- result[16+x*20,]extractdata <- rbind(extractdata,e)f <- result[20+x*20,]extractdata <- rbind(extractdata,f)#数据做差#subdata <- rbind(subdata,b-d)#subdata <- rbind(subdata,b-c)#subdata <- rbind(subdata,a-d)#subdata <- rbind(subdata,a-c)#subdata <- rbind(subdata,e-c)#subdata <- rbind(subdata,f-d)}#subdata <- subdata[-1,]extractdata <- extractdata[-1,]#rrr <- rbind(extractdata,subdata)rrr  <- extractdatafinal <- data[1]for(i in 1:30){for(j in rrr[i,]){final <- cbind(final,j)}}filename1 <- paste("./","keyframe","/",filename,sep="")#文件名write.table(final,filename1,row.names=FALSE,col.names=FALSE)#保存}

文件file_operator8.R

#将all_files_process2中关键五针的数据中的第1、4,8,12,16,20个关节点坐标和某两个关节点之间的#欧式距离setwd("D:/getandcleandata/")dir.create("keyframe")name <- "all_files_process2"filenames <- list.files(name)for(filename in filenames){result <- 0path <- paste("./all_files_process2/",filename,sep="")#读取每一个文件的数据data <- read.table(path)nrownum <- floor(ncol(data)/3)for(n in 1:nrownum){data <- as.matrix(data)rowdata = data[(3*n-1):(1+3*n)]result = rbind(result,rowdata)}result <- result[-1,]#去除第一行为0的数据extractdata <- 0subdata <- 0for(x in 0:4){a <- result[1+x*20,]extractdata <- rbind(extractdata,a)b <- result[4+x*20,]extractdata <- rbind(extractdata,b)c <- result[8+x*20,]extractdata <- rbind(extractdata,c)d <- result[12+x*20,]extractdata <- rbind(extractdata,d)e <- result[16+x*20,]extractdata <- rbind(extractdata,e)f <- result[20+x*20,]extractdata <- rbind(extractdata,f)#做每一帧之间的几个关节点的欧式距离#dist(rbind(a,b),method="euclidean")subdata <- cbind(subdata,dist(rbind(a,b),method="euclidean"))subdata <- cbind(subdata,dist(rbind(a,c),method="euclidean"))subdata <- cbind(subdata,dist(rbind(a,d),method="euclidean"))subdata <- cbind(subdata,dist(rbind(a,e),method="euclidean"))subdata <- cbind(subdata,dist(rbind(a,f),method="euclidean"))subdata <- cbind(subdata,dist(rbind(b,c),method="euclidean"))subdata <- cbind(subdata,dist(rbind(b,d),method="euclidean"))subdata <- cbind(subdata,dist(rbind(b,e),method="euclidean"))subdata <- cbind(subdata,dist(rbind(b,f),method="euclidean"))subdata <- cbind(subdata,dist(rbind(c,d),method="euclidean"))subdata <- cbind(subdata,dist(rbind(c,e),method="euclidean"))subdata <- cbind(subdata,dist(rbind(c,f),method="euclidean"))subdata <- cbind(subdata,dist(rbind(d,e),method="euclidean"))subdata <- cbind(subdata,dist(rbind(d,f),method="euclidean"))subdata <- cbind(subdata,dist(rbind(e,f),method="euclidean"))}subdata <- subdata[,-1] #五帧数据中每一帧中的关节点的欧式距离#extractdata <- extractdata[-1,]#rrr <- rbind(extractdata,subdata)#rrr  <- extractdatafinal <- data[1]for(i in 1:75){final <- cbind(final,subdata[i])}filename1 <- paste("./","keyframe","/",filename,sep="")#文件名write.table(final,filename1,row.names=FALSE,col.names=FALSE)#保存}
文件run_analysis.R

run_analysis<-function(){xtest<-read.table("D:\\getandcleandata\\getdata-projectfiles-UCI HAR Dataset\\UCI HAR Dataset\\test\\X_test.txt")ytest<-read.table("D:\\getandcleandata\\getdata-projectfiles-UCI HAR Dataset\\UCI HAR Dataset\\test\\y_test.txt")xtrain<-read.table("D:\\getandcleandata\\getdata-projectfiles-UCI HAR Dataset\\UCI HAR Dataset\\train\\X_train.txt")ytrain<-read.table("D:\\getandcleandata\\getdata-projectfiles-UCI HAR Dataset\\UCI HAR Dataset\\train\\y_train.txt")feature<-read.table("D:\\getandcleandata\\getdata-projectfiles-UCI HAR Dataset\\UCI HAR Dataset\\features.txt")activityLabels<-read.table("D:\\getandcleandata\\getdata-projectfiles-UCI HAR Dataset\\UCI HAR Dataset\\activity_labels.txt")subjecttrain<-read.table("D:\\getandcleandata\\getdata-projectfiles-UCI HAR Dataset\\UCI HAR Dataset\\train\\subject_train.txt")subjecttest<-read.table("D:\\getandcleandata\\getdata-projectfiles-UCI HAR Dataset\\UCI HAR Dataset\\test\\subject_test.txt")#1:Merges the training and the test sets to create one data set.#tidy data of x and yx<-rbind(xtest,xtrain)y<-rbind(ytest,ytrain)fnames<-c("id","feature")colnames(feature)<-fnamesfea<-feature$feature #extract the column name of x and ycolnames(x)<-fea   #assignment colname to xcolnames(y)<-c("activitytype")#assignment colname to y#tidy data of subjectsubject<-rbind(subjecttest,subjecttrain)#merge subjecttest and subjecttrain to subjectcolnames(subject)<-c("subject")#change the column namenumrow <- nrow(y)id <- 1:numrowy <- cbind(y,id)#add the id columnsubject <- cbind(subject,id)x <- cbind(x,id)#mergemergedata<-merge(subject,y,by="id",all.y=TRUE)mergedata<-merge(mergedata,x,by="id",all.y=TRUE)#write.table(mergedata,"mergedata.txt",row.names=FALSE)#2:Extracts only the measurements on the mean and standard deviation for each measurement. j <- 0colnam <- names(mergedata)extractstd <- NULLextractmean <- NULLcolnamestd <- NULLcolnamemean <- NULLfor(n in colnam){j <- j + 1logstd <- grepl("std",n)logmean <- grepl("mean",n)if(logstd == TRUE){colnamestd <-c(colnamestd,n)extractstd <- cbind(extractstd,mergedata[,j])}if(logmean == TRUE){colnamemean <- c(colnamemean ,n)extractmean <- cbind(extractmean,mergedata[,j])}colnames(extractstd) <- colnamestdcolnames(extractmean) <- colnamemean}#write.table(extractstd,"extractstd.txt",row.names=FALSE)#write.table(extractmean,"extractmean.txt",row.names=FALSE)#3:Uses descriptive activity names to name the activities in the data setactivity <- c("ida","activityname")colnames(activityLabels)<-activity ida<-activityLabels$idaacivitytype<-mergedata$activitytypefor(x in ida){i<-0for(y in acivitytype){i <- i + 1if(x == y){if(x == 1){  acivitytype[i] <- "WALKING"}if(x == 2){  acivitytype[i] <- "WALKING_UPSTAIRS"}if(x == 3){  acivitytype[i] <- "WALKING_DOWNSTAIRS"}if(x == 4){  acivitytype[i] <- "SITTING"}if(x == 5){  acivitytype[i] <- "STANDING"}if(x == 6){  acivitytype[i] <- "LAYING"} }}}mergedata$activitytype <- acivitytype#write.table(mergedata,"mergedata4.txt",row.names=FALSE)#4:Appropriately labels the data set with descriptive variable names.#I think the default variable name is perfectfulextractstd <- as.data.frame(extractstd)extractmean <- as.data.frame(extractmean)i<-0changecol<-NULLcolna <- names(extractstd)print(colna)for(x in colna){i <- i+1body <- grepl("Body",x)gravity <- grepl("Gravity",x)if(body == TRUE){spcol <- sub(pattern="Body",replacement="B",colna[i])}if(gravity == TRUE){spcol <- sub(pattern="Gravity",replacement="G",colna[i])}changecol <- c(changecol,spcol)}colnames(extractstd) <- changecoli<-0changecol<-NULLcolna <- names(extractmean)print(colna)for(x in colna){i <- i+1body <- grepl("Body",x)gravity <- grepl("Gravity",x)if(body == TRUE){spcol <- sub(pattern="Body",replacement="B",colna[i])}if(gravity == TRUE){spcol <- sub(pattern="Gravity",replacement="G",colna[i])}changecol <- c(changecol,spcol)}colnames(extractmean) <- changecol#5:From the data set in step 4, creates a second, independent tidy data set with the average of each variable for each activity and each subject.extractstd <- cbind(extractstd,mergedata[,1:3])extractmean <- cbind(extractmean,mergedata[,1:3])sub <- extractstd$subjectsub <- unique(sub)activity <- extractstd$activitytypeactivity <- unique(activity)#extract the average include std everyPA <- NULLactper <- NULLactperstd <- NULLactivitytype <- NULLperson <- NULLfor(p in sub){for(a in activity){p<-as.character(p)actperx <- paste(a,p, sep="")actper <- c(actper,actperx)everyPA <- extractstd[which(extractstd$subject == p & extractstd$activitytype == a),]nc <- ncol(everyPA)#b  <- nc-2#actpermean <- everyPA[,b:nc]nc<-nc-3e<-everyPA[,1:nc]em<-apply(e[,1:nc],2,mean)person <- c(person,p)activitytype <- c(activitytype ,a)actperstd <- rbind(actperstd ,em)}}rownames(actperstd) <- actper#extract the average include std everyPB <- NULLactperA <- NULLactpermean <- NULLactivitytype <- NULLperson <- NULLfor(p in sub){for(a in activity){p<-as.character(p)actperx <- paste(a,p, sep="")actperA <- c(actperA,actperx)everyPB <- extractmean[which(extractmean$subject == p & extractmean$activitytype == a),]nc <- ncol(everyPB)#b  <- nc-2#actpermean <- everyPB[,b:nc]nc<-nc-3e<-everyPB[,1:nc]em<-apply(e[,1:nc],2,mean)person <- c(person,p)activitytype <- c(activitytype ,a)actpermean <- rbind(actpermean ,em)}}rownames(actpermean) <- actperAtotal<-cbind(actpermean,actperstd)total <- cbind(total ,activitytype)total <- cbind(total ,person)total<-as.data.frame(total)View(total)write.table(total,"result.txt",row.names=FALSE)sum<-0i<-0s<-0for(x in doll) { i<-i+1 cha <- as.character(doll[i,]) pro<-gsub(",","",cha) sum<-c(sum,pro)  }}

还有今天总结的一句代码,读取列数不一样的文件,但是有一定规律。

data <- read.table("D:\\getandcleandata\\a01_s01_e01_skeleton.txt",skip = 2,nrows = 40)





0 0