r:重复变量的宽到长

时间:2017-07-18 14:44:13

标签: r data.table reshape reshape2

假设您有一个宽数据集,要求某人对相同属性的各种产品进行评级。

id代表给定的个人

X1代表该人被要求评价的各种产品。

eq_rate_代表他们要求评分的各种属性。例如,eq_1是一个属性,rate_2是另一个属性,依此类推。

    id X1.eq_1 X1.eq_2 X2.eq_1 X2.eq_2 X3.eq_1 X3.eq_2 X1.rate_1 X1.rate_2 X2.rate_1 X2.rate_2 X3.rate_1 X3.rate_2
1   1       2       5       2       1       2       1         5         2         1         2         2         3
2   2       1       1       2       3       3       3         1         4         4         1         3         3
3   3       5       3       2       2       5       3         3         5         1         1         2         5
4   4       3       2       4       4       3       1         3         5         5         1         2         5
5   5       2       3       1       5       4       3         5         5         1         5         2         4
6   6       3       5       4       5       1       4         4         5         4         4         3         5
7   7       5       5       4       1       5       1         2         4         5         3         2         2
8   8       4       4       2       4       1       2         4         4         5         4         3         4
9   9       4       5       3       1       2       1         4         4         3         5         4         4
10 10       5       4       1       4       1       4         1         3         5         2         1         3

最终我想结束这样的事情 - 请注意我删除了数据,因为我不相信我可以让结果看起来正确。

id  product eq_1    eq_2    rate_1  rate_2
1   1   (data)  (data)  (data)  (data)
2   1   (data)  (data)  (data)  (data)
3   1   (data)  (data)  (data)  (data)
4   1   (data)  (data)  (data)  (data)
5   1   (data)  (data)  (data)  (data)
6   1   (data)  (data)  (data)  (data)
7   1   (data)  (data)  (data)  (data)
8   1   (data)  (data)  (data)  (data)
9   1   (data)  (data)  (data)  (data)
10  1   (data)  (data)  (data)  (data)
1   2   (data)  (data)  (data)  (data)
2   2   (data)  (data)  (data)  (data)
3   2   (data)  (data)  (data)  (data)
4   2   (data)  (data)  (data)  (data)
5   2   (data)  (data)  (data)  (data)
6   2   (data)  (data)  (data)  (data)
7   2   (data)  (data)  (data)  (data)
8   2   (data)  (data)  (data)  (data)
9   2   (data)  (data)  (data)  (data)
10  2   (data)  (data)  (data)  (data)

以下是数据的dput

structure(list(id = 1:10, X1.eq_1 = c(2L, 1L, 5L, 3L, 2L, 3L, 
5L, 4L, 4L, 5L), X1.eq_2 = c(5L, 1L, 3L, 2L, 3L, 5L, 5L, 4L, 
5L, 4L), X2.eq_1 = c(2L, 2L, 2L, 4L, 1L, 4L, 4L, 2L, 3L, 1L), 
    X2.eq_2 = c(1L, 3L, 2L, 4L, 5L, 5L, 1L, 4L, 1L, 4L), X3.eq_1 = c(2L, 
    3L, 5L, 3L, 4L, 1L, 5L, 1L, 2L, 1L), X3.eq_2 = c(1L, 3L, 
    3L, 1L, 3L, 4L, 1L, 2L, 1L, 4L), X1.rate_1 = c(5L, 1L, 3L, 
    3L, 5L, 4L, 2L, 4L, 4L, 1L), X1.rate_2 = c(2L, 4L, 5L, 5L, 
    5L, 5L, 4L, 4L, 4L, 3L), X2.rate_1 = c(1L, 4L, 1L, 5L, 1L, 
    4L, 5L, 5L, 3L, 5L), X2.rate_2 = c(2L, 1L, 1L, 1L, 5L, 4L, 
    3L, 4L, 5L, 2L), X3.rate_1 = c(2L, 3L, 2L, 2L, 2L, 3L, 2L, 
    3L, 4L, 1L), X3.rate_2 = c(3L, 3L, 5L, 5L, 4L, 5L, 2L, 4L, 
    4L, 3L)), .Names = c("id", "X1.eq_1", "X1.eq_2", "X2.eq_1", 
"X2.eq_2", "X3.eq_1", "X3.eq_2", "X1.rate_1", "X1.rate_2", "X2.rate_1", 
"X2.rate_2", "X3.rate_1", "X3.rate_2"), class = "data.frame", row.names = c(NA, 
-10L))

编辑:任何潜在的副本都没有回答这个问题,因为所有重复项都使用硬编码来表示变量名称。必须有一种自动化方法吗?我的数据集有100多个变量,所以我无法对所有这些变量进行硬编码。

0 个答案:

没有答案