У меня есть несколько файлов данных в каталоге (все tsvs). Один файл данных будет выглядеть следующим образом:R - Выполнение расплавления на каждой кадре данных в списке
Killed Rick Darryl Herschel Tyrese Shane
Zombies 200 300 20 4 100
People 10 2 0 0 0
Dogs 0 0 0 0 0
Следующий файл данных хотел это:
Killed Jon Rob Varys Ned Joeffry Mormont
Whites 1 0 0 0 0 0
People 0 10 1 30 0 100
Я хотел бы объединить его так, что файлы данных будут читать так:
Killed Variable Value
Zombies Rick 200
Zombies Darryl 300
Zombies Herschel 20
Zombies Tyrese 4
Zombies Shane 100
People Rick 10
People Darryl 2
People Herschel 0
People Tyrese 0
People Shane 0
Dogs Rick 0
Dogs Darryl 0
Dogs Herschel 0
Dogs Tyrese 0
Dogs Shane 0
Whites Jon 1
Whites Rob 0
Whites Varys 0
Whites Ned 0
Whites Joeffry 0
Whites Mormont 0
People Jon 0
People Rob 10
People Varys 1
People Ned 30
People Joeffry 0
People Mormont 100
Я хотел бы проанализировать каталог и загрузить все данные в R, а затем расплавить каждый фрейм данных, используя пакет переформатирования. Я хотел бы использовать rbind для объединения всех кадров данных в один кадр данных. Вот код, который я до сих пор:
library(reshape)
filenames <- list.files(pattern='*.tsv')
names <- substr(filenames,1, nchar(filenames)-4)
newmelt <- function(x) {
x <- melt(x, id=c("ID_REF"))
}
for (i in names){
filepath <- file.path(paste(i,".tsv", sep=""))
assign(i, read.csv(filepath, sep="\t"))
}
sapply(names(names), newmelt)
Я знаю, что я могу получить результаты, которые я хочу с помощью этого:
test <- read.csv("marvel.tsv", sep="\t")
test.m <- melt(test, id=c("Killed"))
Но я не знаю, как я могу применить это в течение всего кадры данных в моем списке.
Благодарим за понимание!
EDIT: Я вдруг слова.
должен ли результат быть один большой комбинированный топленое кадр данных, или список расплавленных кадров данных? – joran
@joran Да, что я хотел бы записать в файл. –
'melt.list' существует и будет вызывать' melt.data.frame' для каждого компонента, поэтому вы можете «расплавить» (lapply (имена файлов, read.table), id = c («Killed»)) ' – baptiste