Поскольку у меня не было доступа к исходным данным, вот ответ, который иллюстрирует, как написать файл марки, модели и MPG для автомобилей, которые имеют более 20 MPG из набора данных mtcars
.
Сначала мы должны извлечь марку и модель из названий строк и очистить несколько строк.
makeModel <- rownames(mtcars)
strings <- strsplit(makeModel," ")
# clean the data so each row has make and model
strings[[2]] <- c("Mazda","RX4 Wagon")
strings[[4]] <- c("AMC","Hornet 4 Drive")
strings[[5]] <- c("AMC","Hornet Sportabout")
strings[[6]] <- c("Plymouth","Valiant")
strings[[7]] <- c("Plymouth","Duster 360")
strings[[24]] <- c("Chevrolet","Camaro Z28")
Далее мы добавляем make
, model
и year
к фрейму данных. Обратите внимание, что все автомобили mtcars
относятся к 1973 - 74 модельному году.
# add make and model to data frame
mtcars$make <- unlist(lapply(1:length(strings),function(x){strings[[x]][1]}))
mtcars$model <- unlist(lapply(1:length(strings),function(x){strings[[x]][2]}))
mtcars$year <- 1973
Теперь мы напишем функцию для чтения данных, подмножество в mpg > 20
и записи только make
, model
, year
и mpg
в выходной файл, разделенные табуляцией.
carpFunction <- function(x,outfile = "./mtcarsSubset.txt"){
outputData <- x[x$mpg > 20,c(12:14,1)]
write.table(outputData,file=outfile,sep="\t",row.names = FALSE)
}
Мы вызываем функцию для создания выходного файла.
carpFunction(mtcars)
... и вывод при просмотре в текстовом редакторе, таком как UltraEdit, где мы можем видеть вкладки как >>
, выглядит следующим образом.

Обратите внимание, теперь, когда ОП опубликовал данные, мы по-прежнему не должны давать полный ответ на домашние вопросы. Методы, использованные в этом ответе, могут быть использованы для ответа на домашнее задание.
Чтобы продемонстрировать это, мы предоставим все, кроме кода в функции carPFunction()
.
textFile <- "manufacturer|model |displ |year |cyl |trans |drv |cty|hwy
audi|a4|1.8|1999|4|auto(l5) |f|18|29
audi|a4|1.8|1999|4|manual(m5)|f|21|29
audi|a4|2.0|2008|4|manual(m6)|f|20|31
audi|a4|2.0|2008|4|auto(av) |f|21|30
audi|a4|2.8|1999|6|auto(l5) |f|16|26
audi|a4|2.8|1999|6|manual(m5)|f|18|26
audi|a4|3.1|2008|6|auto(av) |f|18|27
audi|a4 quattro|1.8|1999|4|manual(m5)|4|18|26
audi|a4 quattro|1.8|1999|4|auto(l5) |4|16|25
audi|a4 quattro|2.0|2008|4|manual(m6)|4|20|28
audi|a4 quattro|2.0|2008|4|auto(s6) |4|19|27
audi|a4 quattro|2.8|1999|6|auto(l5) |4|15|25
audi|a4 quattro|2.8|1999|6|manual(m5)|4|17|25
audi|a4 quattro|3.1|2008|6|auto(s6) |4|17|25
audi|a4 quattro|3.1|2008|6|manual(m6)|4|15|25
audi|a6 quattro|3.1|2008|6|auto(s6) |4|17|25
"
cars <- read.csv(text=textFile,sep="|",stringsAsFactors=FALSE)
carPFunction <- function(x,outfile = "./carPSubset.txt"){
# code to exactly solve homework
# goes here
}
carPFunction(cars)
... и вывод:
