重构/重构R

时间:2017-02-06 05:49:42

标签: r dataframe reshape reshape2 data-cleaning

我正在清理数据集,但框架并不理想,我必须重塑它,但我不知道如何。以下是原始数据框:

Rater   Rater ID    Ratee1  Ratee2  Ratee3  Ratee1.item1    Ratee1.item2    Ratee2.item1    Ratee2.item2    Ratee3.item1    Ratee3.item2
A       12          701     702     800     1               2               3               4               5               6
B       23          45      46      49      3               3               3               3               3               3
C       24          80      81      28      2               3               4               5               6               9

然后我想知道如何重塑它如下:

Rater   Rater ID    Ratee   item1   item2
A       12          701     1       2
A       12          702     3       4
A       12          800     5       6
B       23          45      3       3
B       23          46      3       3
B       23          49      3       3
C       24          80      2       3
C       24          81      4       5
C       24          28      6       9

这个重塑与这个重塑有点不同(Reshaping data.frame from wide to long format)。因为我在原始数据中有三个部分。

  1. 第一部分是关于评估者的ID(Rater和Rater ID)。
  2. 第二个是关于retee的ID(Ratee1,Ratee2,Ratee3)。
  3. 第三部分是关于Rater对每个受托人的评级(受托人* .item1(或2))。
  4. 为了更清楚,让我简要介绍数据收集过程。

    1. 首先,评估者用他自己的名字和身份证明,
    2. 然后提名三个人(Ratee1到Ratee3),
    3. 然后对每个retee的问题进行评分(对于每个retee,有两个问题)。
    4. 有谁知道如何重塑这个?谢谢!

1 个答案:

答案 0 :(得分:-1)

我们可以使用melt

中的data.table
library(data.table)
melt(setDT(df1), measure = patterns("^Ratee\\d+$", "^Ratee\\d+\\.item1", 
    "^Ratee\\d+\\.item2"), value.name = c("Ratee", "item1", "item2"))[, 
       variable := NULL][order(Rater)]
#    Rater RaterID Ratee item1 item2
#1:     A      12   701     1     2
#2:     A      12   702     3     4
#3:     A      12   800     5     6
#4:     B      23    45     3     3
#5:     B      23    46     3     3
#6:     B      23    49     3     3
#7:     C      24    80     2     3
#8:     C      24    81     4     5
#9:     C      24    28     6     9