0

この問題を見るたびに、私の脳はシャットダウンします。他の人にとっては簡単だと思います。
次のように単純化できる非常に大きなデータフレームがあります。

day subject y variable
1   a   2.1
1   b   3.5
1   c   2.2
2   a   3.3
2   b   4.5
2   c   3.8
3   a   5.1
3   b   2.8
3   c   2.3
4   a   4.2
4   b   1.9
4   c   2.5
5   a   4.9
5   b   3.8
5   c   3.4

件名別の列が必要です。たとえば、次のようになります。

a     b     c
2.1   3.5   2.2
3.3   4.5   3.8
5.1   2.8   2.3
4.2   1.9   2.5
4.9   3.8   3.4

誰かが私をこの時点に連れて行ってくれれば、数日間の新しい列を簡単に作成できます. 私はデータ操作が上手になってきましたが、時々、このようなことに行き詰まることがあります。

4

2 に答える 2

2

ベースの使用:

dat <- structure(list(day = c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 4L, 
4L, 4L, 5L, 5L, 5L), subject = structure(c(1L, 2L, 3L, 1L, 2L, 
3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L), .Label = c("a", "b", 
"c"), class = "factor"), y.variable = c(2.1, 3.5, 2.2, 3.3, 4.5, 
3.8, 5.1, 2.8, 2.3, 4.2, 1.9, 2.5, 4.9, 3.8, 3.4)), .Names = c("day", 
"subject", "y.variable"), class = "data.frame", row.names = c(NA, 
-15L))

unstack(dat, y.variable~subject)

    a   b   c
1 2.1 3.5 2.2
2 3.3 4.5 3.8
3 5.1 2.8 2.3
4 4.2 1.9 2.5
5 4.9 3.8 3.4
于 2012-07-26T04:22:52.583 に答える
0

簡単な方法で、次のようにすることができます:

df <- data.frame(Subject = c("a","b","c","a","b","c","a","b","c","a","b","c","a","b","c"), y.variable = c(2.1, 3.5, 2.2, 3.3, 4.5,3.8, 5.1, 2.8, 2.3, 4.2, 1.9, 2.5, 4.9, 3.8, 3.4))
ind.a <- which(df$Subject == "a")
ind.b <- which(df$Subject == "b")
ind.c <- which(df$Subject == "c")

data.frame(a=df$y.variable[ind.a],b=df$y.variable[ind.b],c=df$y.variable[ind.c])
    a   b   c
1 2.1 3.5 2.2
2 3.3 4.5 3.8
3 5.1 2.8 2.3
4 4.2 1.9 2.5
5 4.9 3.8 3.4
于 2012-07-26T04:38:18.933 に答える