-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrun_analysis.R
More file actions
101 lines (77 loc) · 2.87 KB
/
run_analysis.R
File metadata and controls
101 lines (77 loc) · 2.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
setwd("/home//ines.huertas/Escritorio/ADA/data_scientist/curso3//project/week/UCI HAR Dataset/")
#The working directory will be UCI HAR Dataset
features <- read.table( "features.txt", header=FALSE, stringsAsFactors=FALSE)
activities <- read.table("activity_labels.txt", header=FALSE, stringsAsFactors=FALSE)
datos<-c("test","train", header=FALSE)
datatest<-NULL
datatrain<-NULL
for(data in datos){
#Read id user for test and data and store in id_user variable
id_string<-paste(data,"subject_",sep="/")
id_string<-paste(id_string,".txt",sep=data)
str(id_string)
id_user<-read.table(id_string)
#Read sets of boths train and test
set_string<-paste(data,"X_",sep="/")
set_string<-paste(set_string,".txt",sep=data)
str(set_string)
sets<-read.table(set_string, header=FALSE)
#Read labels of boths train and test
set_string<-paste(data,"y_",sep="/")
set_string<-paste(set_string,".txt",sep=data)
str(set_string)
labels<-read.table(set_string, header=FALSE)
col<-c("idUser","activity",features$V2)
if(data=="test"){
datatest<-data.frame(id_user,labels,sets)
colnames(datatest)<-col
}else{
mytrain<-data.frame(id_user,labels,sets)
colnames(mytrain)<-col
}
}
#Merge datasets
data<-rbind(mytrain,datatest)
#Rename de activity by name
activity<-factor(data$activity, labels = activities$V2)
data$activity<-activity
#Select mean an standar desviation variable from dataset
col<-c("idUser","activity",features$V2[grep("mean\\(|std\\(", features$V2)])
newvalues<-features$V2[grep("mean\\(|std\\(", features$V2)]
newvalues<-append(newvalues,"idUser",0)
newvalues<-append(newvalues,"activity",1)
selectmeasure<-data[,colnames(data)%in%newvalues]
#Rename names more intuitive
columnVar<-colnames(selectmeasure)
vectorOriginal<-c("\\(\\)-","tBody","tGravity","fBody","fGravity","\\-mean\\(\\)\\-","\\-std\\(\\)\\-","\\-mean\\(\\)","\\-std\\(\\)")
vectorChange<-c("","timeBody", "timeGravity","BodyFft","GravityFft","Mean","Std", "Mean","Std")
control<-1
res<-columnVar
while(control<=length(vectorChange)){
res<-gsub(vectorOriginal[control],vectorChange[control],res)
control<-control+1
}
colnames(selectmeasure)<-res
#Creates a second, independent tidy data set with the average of each variable for each activity and each subject.
subject<-unique(selectmeasure$idUser)
resultado<-NULL
for(subj in subject){
user<-selectmeasure[selectmeasure$idUser==subj,]
act<-unique(user$activity)
for(acti in act){
midata<-user[user$activity==acti,]
mimedia<-midata[-1]
mimedia<-mimedia[-1]
media<-colMeans(mimedia)
media<-append(media,subj,0)
media<-append(media,acti,1)
resultado<-rbind(resultado,media)
}
}
selectmeasure<-append(selectmeasure,"C",0)
columnVar<-colnames(selectmeasure)
colnames(resultado)<-columnVar
resu<-as.data.frame(resultado)
colnames(resu)<-columnVar
#write the datatidy
write.csv(resu,"datatidy.csv")