1

Rに次のテーブルがあります。転置したいです。私はRが初めてで、SASを使用しています。

だから私はproc transposeのレプリカがSASであることを望んでいます。必要な形式でも出力を提供しています。

C_number<-c(1:20)
REG<-letters[1:20]
Market<-c(21:40)
DF<-data.frame(C_number,REG,Market)
n <- nrow(DF)
DF$A_count <- sample(100, n, replace=TRUE) 
DF$B_count <- sample(100, n, replace=TRUE) 

出力は次のようになります。

C_number          REG       Market      Name of former variable          Mem_count1
1                  A        21          A_count                           5
1                  A        21          B_count                           80
2                  B        22          A_count                           36
2                  B        22          B_count                           56
3                  C        23          A_count                           77
3                  C        23          B_count                           26

したがって、転置の背後にある基本的な考え方は、2 つの列 A_count と B_count を「以前の変数の名前」という名前の列に変換し、それぞれの値を与える新しい列 mem_count1 を作成することです。

正確には転置ではありませんが、似たようなものです。これを行う方法がわかりません。この問題を解決するのを手伝ってください。

4

2 に答える 2

6

reshape2そのために(またはreshapeパッケージ)、特にmelt関数を使用できます。あなたのようなデータセットを使用すると(ランダムシードが異なるため同じではありません)、次のようになります。

require(reshape2)
DF_result <- melt(DF,  measure.vars = c("A_count", "B_count"))
head(DF_result)


##   C_number REG Market variable value
## 1        1   a     21  A_count    49
## 2        2   b     22  A_count    99
## 3        3   c     23  A_count    19
## 4        4   d     24  A_count    43
## 5        5   e     25  A_count    53
## 6        6   f     26  A_count    50
于 2012-08-09T14:16:05.720 に答える
0

これは基本関数でそれを行いますreshape

reshape(DF,
        direction="long",
        idvar=1:3, varying=c("A_count","B_count"), # the constant and varying columns
        times=c("A_count","B_count"),     # sets the values for new 'source' column
        v.names="Name_of_former_variable" ) # the header for the 'source' column

                C_number REG Market    time Counts
1.a.21.A_count         1   a     21 A_count     14
2.b.22.A_count         2   b     22 A_count     18
3.c.23.A_count         3   c     23 A_count     49
4.d.24.A_count         4   d     24 A_count     64
5.e.25.A_count         5   e     25 A_count     99
6.f.26.A_count         6   f     26 A_count     10
7.g.27.A_count         7   g     27 A_count     70
8.h.28.A_count         8   h     28 A_count      1
snipped output
于 2012-08-09T18:51:30.387 に答える