расплав, дающий несколько столбцов значений

Я читаю оценки параметров из некоторых файлов результатов, которые я хотел бы сравнить в таблице. Но я не могу получить структуру данных в структуру, которую я хочу иметь (имя параметра, значения (файл1), значения (файл2))

Когда я читаю файлы, я получаю широкий фрейм данных с каждым параметром в отдельном столбце, который я хотел бы преобразовать в «длинный» формат с помощью расплава. Но это дает только один столбец со значениями. Любая идея о том, как получить несколько столбцов значений без использования цикла for?

paraA <- c(1,2)
paraB <- c(6,8)
paraC <- c(11,9)
Source <- c("File1","File2")
parameters <- data.frame(paraA,paraB,paraC,Source)

wrong_table <- melt(parameters, by="Source")

person Gunterschnauser    schedule 01.03.2014    source источник
comment
Возможно, небольшое манипулирование t(parameters) может дать то, что вы хотите?   -  person alexis_laz    schedule 01.03.2014


Ответы (2)


Вы можете использовать melt в сочетании с cast, чтобы получить то, что вы хотите. На самом деле это предполагаемый шаблон использования, поэтому функции имеют такие имена:

m<-melt(parameters)
dcast(m,variable~Source)
#   variable File1 File2
# 1    paraA     1     2
# 2    paraB     6     8
# 3    paraC    11     9
person nograpes    schedule 01.03.2014

Преобразование комментария @alexis в ответ, транспонирование (t()) в значительной степени делает то, что вы хотите:

setNames(data.frame(t(parameters[1:3])), parameters[, "Source"])
#       File1 File2
# paraA     1     2
# paraB     6     8
# paraC    11     9

Я использовал setNames выше, чтобы удобно переименовать полученный data.frame за один шаг.

person A5C1D2H2I1M1N2O1R2T1    schedule 01.03.2014