0

私はちょっと同じ問題を抱えています。私はこの種の順序でデータを持っています: ;=列

D1 ;hurs

1  ;0.12

1  ;0.23

1  ;0.34

1  ;0.01

2  ;0.24

2  ;0.67

2  ;0.78

2  ;0.98

そして、私はそれを次のようにするのが好きです:

D1; X; X; X; X    
1;0.12; 0.23; 0.34; 0.01; 
2;0.24; 0.67; 0.78; 0.98;

D1に関して並べ替えて、形を変えたいですか?誰にもアイデアがありますか?D1 の 7603 値に対してこれを行う必要があります。

4

5 に答える 5

1

主張される可能性が低いスケルトンを掘り起こすには、なぜ使用しないのaggregate()ですか?

dat = read.table(header = TRUE, sep = ";", text = "D1 ;hurs
1  ;0.12
1  ;0.23
1  ;0.34
1  ;0.01
2  ;0.24
2  ;0.67
2  ;0.78
2  ;0.98")
aggregate(hurs ~ D1, dat, c)
#   D1 hurs.1 hurs.2 hurs.3 hurs.4
# 1  1   0.12   0.23   0.34   0.01
# 2  2   0.24   0.67   0.78   0.98

D1 の各 ID の長さが同じでない場合は、reshape()最初に「時間」変数を作成した後にベース R を使用することもできます。

dat2 <- dat[-8, ]
dat2$timeSeq <- ave(dat2$D1, dat2$D1, FUN = seq_along)
reshape(dat2, direction="wide", idvar="D1", timevar="timeSeq")
#   D1 hurs.1 hurs.2 hurs.3 hurs.4
# 1  1   0.12   0.23   0.34   0.01
# 5  2   0.24   0.67   0.78     NA
于 2012-10-19T06:10:47.777 に答える
1

ハドリーのreshapeパッケージを調べます。それはあらゆる種類の素晴らしいことをします。以下のコードはおもちゃの例で動作しますが、おそらくもっと洗練された方法があります。簡単に言えば、データはすでに?meltフォームに表示されているので、単純?cast化できます。

また、これらのリンクをチェックしてください

http://www.statmethods.net/management/reshape.html

http://had.co.nz/reshape/

library(reshape)

help(package=reshape)
?melt

D1 <- c(1,1,1,1,2,2,2,2)
hurs <- c(.12, .23, .34, .01, .24, .67, .78, .98)
var <- rep(paste("X", 1:4, sep=""), 2)

foo <- data.frame(D1, var, hurs)
foo

cast(foo, D1~var)
于 2011-03-09T20:29:45.580 に答える
0

D1あたりのhursの数が等しくないと仮定しました(7603値)

txt = 'D1 ;hurs
 1 ;0.12
 1 ;0.23
 1 ;0.34
 1 ;0.01
 2 ;0.24
 2 ;0.67
 2 ;0.78
 2 ;0.98'

dat <- read.table(textConnection(txt),header=T,sep=";")
dat$Lp <- 1:nrow(dat)
dat <- dat[order(dat$D1,dat$Lp),]
out <- split(dat$hurs,dat$D1)
out <- sapply(names(out),function(x) paste(paste(c(x,out[[x]]),collapse=";"),";",sep="",collapse=""))
于 2011-03-10T09:05:45.453 に答える
0

reshape2 は実際には reshape より優れています。reshape を使用すると、 reshape2 よりもはるかに多くのメモリと時間が使用されます (少なくとも、900 万行のようなものを使用する私の特定の例では)。

于 2012-12-08T18:35:38.913 に答える
0

Hadley Wickham の reshape パッケージとその cast() 関数を確認してください。

http://had.co.nz/reshape/

于 2011-03-09T20:33:21.827 に答える