4

StackOverflowを含むウェブ全体を調べ、この質問をする前にさまざまなことをテストしましたが、優れた回答を逃した場合はご容赦ください。

reshape関数(およびパッケージも)について多くの助けがありますが、どちらも必要なことを実行できません。件名によって異なる「時間」変数があります。たとえば、time1、time2、time3ではありません。サブジェクトIDごとに一意の時間値をそれぞれ「time1」、「time2」、「time3」として扱う幅広いデータセットを作成したいのですが、日付を保存する必要があります。これを具体的にするために、ここにいくつかのサンプルデータがあります:

Id<-c(1, 1,1, 2,2,2, 3)
date<-c("Jan10", "Jun11", "Dec11", "Feb10", "May10", "Dec10", "Jan11")
Score<-c(52, 43, 67, 56, 33, 21, 20)
format2<-data.frame(Id, date, Score)
format2

  Id  date Score
1  1 Jan10    52
2  1 Jun11    43
3  1 Dec11    67
4  2 Feb10    56
5  2 May10    33
6  2 Dec10    21
7  3 Jan11    20

私はそれをこのように見せたいです:

  Id  date1 Score1 date2 Score2 date3 Score3
  1  Jan10    52    Jun11    43  Dec11    67
  2  Feb10    56    Dec10    21  May10    33 
  3  Jan11    20      NA     NA    NA     NA

明白な答えを逃した場合は、助けと謝罪をありがとう。

4

1 に答える 1

10

変数を生成する必要があります。これは、次timeを使用してすばやく実行できますave()

format2$time <- ave(format2$Id, format2$Id, FUN=seq_along)
reshape(format2, direction = "wide", idvar="Id", timevar="time")
#   Id date.1 Score.1 date.2 Score.2 date.3 Score.3
# 1  1  Jan10      52  Jun11      43  Dec11      67
# 4  2  Feb10      56  May10      33  Dec10      21
# 7  3  Jan11      20   <NA>      NA   <NA>      NA

reshape2その構文のためにパッケージを好む人もいますが、それでも、time何か面白いことをする前に変数が必要です。

上から続ける(時間変数が作成された場所):

library(reshape2)
format2m <- melt(format2, id.vars=c("Id", "time"))
dcast(format2m, Id ~ variable + time)
#   Id date_1 date_2 date_3 Score_1 Score_2 Score_3
# 1  1  Jan10  Jun11  Dec11      52      43      67
# 2  2  Feb10  May10  Dec10      56      33      21
# 3  3  Jan11   <NA>   <NA>      20    <NA>    <NA>
于 2012-12-04T04:32:57.203 に答える