2013-09-11 3 views
0

У меня есть dataframe, который мне нужно преобразовать на основе значений в нескольких столбцах. Кадр данных следующим образом:Преобразование данных в виде значений из нескольких столбцов

Cond  Exp  pathoffset 
------------------------------- 
congruent standard 0.06819259 
congruent standard 0.27370488 
incongruent standard 0.34841871 
incongruent standard 0.21540861 
congruent forced 0.19483575 
congruent forced 0.35533876 
incongruent forced 0.19483575 
incongruent forced 0.35533876 

dataframe, которые я пытался получить это

con_stand incon_stand con_for incon_for 
---------------------------------------------- 
0.06819259 0.34841871 0.19483575 0.19483575 
0.27370488 0.21540861 0.35533876 0.35533876 

Любая помощь будет оценена

Спасибо

ответ

1

Вы можете использовать dcast из " reshape2 "после добавления переменной" ID ".

mydf$id <- ave(mydf$Cond, mydf$Cond, mydf$Exp, FUN = seq_along) 
library(reshape2) 
dcast(mydf, id ~ Cond + Exp, value.var = "pathoffset") 
# id congruent_forced congruent_standard incongruent_forced incongruent_standard 
# 1 1  0.1948358   0.06819259   0.1948358   0.3484187 
# 2 2  0.3553388   0.27370488   0.3553388   0.2154086 
1

Используйте 1-й и 2-й столбец как индекс в группе третьей колонке, а затем использовать sapply или do.call раскатать список.

sapply(tapply(df[,3], paste(df[,1], df[,2], sep = "_"), c), "[") 

или

do.call(cbind, tapply(df[,3], paste(df[,1], df[,2], sep = "_"), c)) 
Смежные вопросы