我在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,它将给出相应的值.
它不完全是一个转置,但有点类似.我不知道如何做到这一点.请帮我解决这个问题.
你可以使用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)