我有这样的数据:
df
我想将其更改为这样的新数据集:
1 233
1 333
1 455
1 345
2 543
2 433
2 344
2 400
3 444
3 111
3 000
3 432
我怎样才能在R中这样做?任何人都知道这个脚本。请注意,我的实际数据非常大,行数很大。
答案 0 :(得分:1)
将x
作为包含V1
和V2
列的数据框,您可以添加计算每个级别元素的索引:
> x$V0 <- ave(x$V1, x$V1, FUN=seq_along)
> x
V1 V2 V0
1 1 233 1
2 1 333 2
3 1 455 3
4 1 345 4
5 2 543 1
6 2 433 2
7 2 344 3
8 2 400 4
9 3 444 1
10 3 111 2
11 3 0 3
12 3 432 4
现在应用reshape
:
> reshape(x, direction='wide', timevar='V1', idvar='V0')
V0 V2.1 V2.2 V2.3
1 1 233 543 444
2 2 333 433 111
3 3 455 344 0
4 4 345 400 432
x
:
structure(list(V1 = c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L,
3L, 3L), V2 = c(233L, 333L, 455L, 345L, 543L, 433L, 344L, 400L,
444L, 111L, 0L, 432L)), .Names = c("V1", "V2"), class = "data.frame", row.names = c(NA,
-12L))