重塑R(... ala SAS PROC Transpose)

use*_*144 1 r

我在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) 
Run Code Online (Sandbox Code Playgroud)

OUTPUT应该是:

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
Run Code Online (Sandbox Code Playgroud)

因此,转置背后的基本思想是将两列A_count和B_count转换为一个名为"前变量名称"的列,并创建一个新列mem_count1,它将给出相应的值.

它不完全是一个转置,但有点类似.我不知道如何做到这一点.请帮我解决这个问题.

dic*_*koa 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
Run Code Online (Sandbox Code Playgroud)