0

我有一个需要根据多列中的值进行转换的数据框。数据框如下:

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

我一直试图获得的数据框是

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

任何帮助,将不胜感激

谢谢

4

2 回答 2

1

dcast添加“ID”变量后,您可以使用“reshape2”。

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
于 2013-09-11T08:35:31.290 回答
1

使用第 1 列和第 2 列作为索引对第 3 列进行分组,然后使用sapplyordo.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))
于 2013-09-11T08:38:37.450 回答