複数のグループ化に基づいて、長い形式から広い形式にデータを再形成しようとしていますが、成功しません。このデータで:
id <- 1:20
month <- rep(4:7, 50)
name <- rep(c("sam", "mike", "tim", "jill", "max"), 40)
cost <- sample(1:100, 200, replace=TRUE)
df <- data.frame(id, month, name, cost)
df.mo.mean <- aggregate(df$cost ~ df$name + df$month, FUN="mean")
df.mo.sd <- aggregate(df$cost ~ df$name + df$month, FUN="sd")
df.mo <- data.frame(df.mo.mean, df.mo.sd)
df.mo <- df.mo[,-c(4,5)]
df.mo[3:4] <- round(df.mo[3:4],2)
head(df)
id month name cost
1 1 4 sam 29
2 2 5 mike 93
3 3 6 tim 27
4 4 7 jill 67
5 5 4 max 28
6 6 5 sam 69
私は自分のデータを以下のように見せようとしていて、未知の数の名前のためにそれを一般化しようとしています (ただし、最大 15 未満)
month name1.cost.mean name1.cost.sd name2.cost.mean name2.cost.sd
1 45 4 40 6
2 ...
私は試してみましたがreshape
、成功do.call
しませんでした。rbind
私が考えることができる唯一の他の方法は、ループを使用することです。これは、何か間違ったことをしていることを意味します。私は経験がなく、plyr
この問題をベースパッケージで解決したいと考えています(学習目的で)が、それが不可能な場合は、他の提案が非常に役立ちます