我正在查看类似的问题,但我找不到类似于我的案例。我有一个数据框,每个主题,每个条件有多个观察。它看起来像这样:
subject <- c(rep("S1",4), rep("S2",4))
condition <- rep(c(rep("a",2), rep("b",2)),2)
value <- c(1:8)
df <- data.frame(subject,condition,value)
df
subject condition value
S1 a 1
S1 a 2
S1 b 3
S1 b 4
S2 a 5
S2 a 6
S2 b 7
S2 b 8
我想重塑它看起来像这样:
subject condition.a condition.b
S1 1 3
S1 2 4
S2 5 7
S2 6 8
我已尝试reshape
和cast
,但他们给我一条错误消息,因为每个主题和条件都有多个观察结果。有没有人建议如何做到这一点?
谢谢!
答案 0 :(得分:1)
从某种意义上说,a
和b
的哪些值应该相互耦合,这个问题有点含糊不清。
假设您希望(S1
,a
)的第一个值与第一个(S2
,b
)等结合,那么您可以添加一个虚拟count
列,用于计算各种出现次数
(subject
,condition
),然后使用count_id
到melt
和dcast
这样的数据:
library(plyr)
library(reshape2)
subject <- c(rep("S1",4), rep("S2",4))
condition <- rep(c(rep("a",2), rep("b",2)),2)
value <- c(1:8)
df <- data.frame(subject,condition,value)
df.2 <- ddply(df, .(subject, condition), function(x) { x$count <- 1:nrow(x); x })
df.2
# subject condition value count
# 1 S1 a 1 1
# 2 S1 a 2 2
# 3 S1 b 3 1
# 4 S1 b 4 2
# 5 S2 a 5 1
# 6 S2 a 6 2
# 7 S2 b 7 1
# 8 S2 b 8 2
df.3 <- melt(df.2, id.vars=c('subject', 'condition', 'count'))
dcast(df.3, subject + count ~ condition)
# subject count a b
# 1 S1 1 1 3
# 2 S1 2 2 4
# 3 S2 1 5 7
# 4 S2 2 6 8
这是你想要的吗?