0

Rで再形成するデータがいくつかありますが、その方法がわかりません。シナリオは次のとおりです。このようなデータがあります

a<- c("exam1", "exam2", "exam3","exam4")
date1<- c(8.2,4.3,6.7,3.9)
date2<- c(11.2,9.3,6.5,4.1)
date3<- c(8.2,9.1,4.3,4.4)
dr.df.a <- cbind(a,date1,date2,date3)
    a       date1 date2  date3
[1,] "exam1" "8.2" "11.2" "8.2"
[2,] "exam2" "4.3" "9.3"  "9.1"
[3,] "exam3" "6.7" "6.5"  "4.3"
[4,] "exam4" "3.9" "4.1"  "4.4"
b<- c("exam1", "exam2", "exam3","exam4")
date1<- c(8.6,14.3,6.7,13.9)
date2<- c(11.2,8.3,16.5,14.1)
date3<- c(4.2,9.1,4.3,14.4)
dr.df.b <- cbind(b,date1,date2,date3)
   b       date1  date2  date3 
[1,] "exam1" "8.6"  "11.2" "4.2" 
[2,] "exam2" "14.3" "8.3"  "9.1" 
[3,] "exam3" "6.7"  "16.5" "4.3" 
[4,] "exam4" "13.9" "14.1" "14.4"

mylist<–list(dr.df.a,dr.df.b)

この例は、再現可能に提案するためのものです。この形式 (dr.df.a と dr.df.b) でデータを取得します。リスト オブジェクトには複数のデータ フレームがあります。
ここで、1行と変数名などを取得する方法を変更する必要があり 、基本的に、リストオブジェクトのすべてのデータフレームexam1_date1, exam1_date2 , exam1_date3, exam2_date1,exam2_date2 ...の行を持つデータフレームを取得したいと考えています。exam1_date1, exam1_date2 , exam1_date3, exam2_date1,exam2_date2 ...このデータを再形成するにはどうすればよいですか?どの関数を使用すればよいですか?

4

3 に答える 3

2

これを試して:

library(reshape2)

# convert the first row (the one defined by variable 'a' in post) into column names
dr.df.2 <- setNames(dr.df[-1,], dr.df[1, ])

m <- melt(dr.df.2)

d <- dcast(m, 1 ~ ...)[-1]
names(d) <- sub("_", "_exam", names(d)) # fix up names (optional)

これを与える:

> d
  date1_exam1 date1_exam2 date1_exam3 date1_exam4 date2_exam1 date2_exam2
1         8.2         4.3         6.7         3.9        11.2         9.3
  date2_exam3 date2_exam4 date3_exam1 date3_exam2 date3_exam3 date3_exam4
1         6.5         4.1         8.2         9.1         4.3         4.4

更新:簡略化されたdcast

于 2013-05-30T13:01:20.707 に答える
0

ベース R から reshape を使用できます。

new <- reshape(dr, varying = list(c("date1","date2","date3")), direction = "long")
new$newname <- apply(new, 1, function(x) paste(x[1],paste("date",x[2],sep=""),sep="_"))
new <- new[,c("date1","newname")]
names(new) <- c("info","exam")

出力:

> new
    info        exam
1.1  8.2 exam1_date1
2.1  4.3 exam2_date1
3.1  6.7 exam3_date1
4.1  3.9 exam4_date1
1.2 11.2 exam1_date2
2.2  9.3 exam2_date2
3.2  6.5 exam3_date2
4.2  4.1 exam4_date2
1.3  8.2 exam1_date3
2.3  9.1 exam2_date3
3.3  4.3 exam3_date3
4.3  4.4 exam4_date3
于 2013-05-30T12:58:47.897 に答える