How to use “cast” in reshape without aggregation

2020-02-10 07:54发布

问题:

In many uses of cast I've seen, an aggregation function such as mean is used.

How about if you simply want to reshape without information loss. For example, if I want to take this long format:

ID     condition    Value
John   a            2
John   a            3
John   b            4
John   b            5
John   a            6
John   a            2
John   b            1
John   b            4

To this wide-format without any aggregation:

ID    a  b
John  2  4
John  3  5
Alex  6  1
Alex  2  4

I suppose that this is assuming that observations are paired and you were missing value would mess this up but any insight is appreciated

回答1:

In such cases you can add a sequence number:

library(reshape2)

DF$seq <- with(DF, ave(Value, ID, condition, FUN = seq_along))
dcast(ID + seq ~ condition, data = DF, value.var = "Value")

The last line gives:

    ID seq a b
1 John   1 2 4
2 John   2 3 5
3 John   3 6 1
4 John   4 2 4

(Note that we used the sample input from the question but the sample output in the question does not correspond to the sample input.)