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

因此,转置背后的基本思想是将两列 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 回答