我有一个关于
首先,
data.table
中的 melt
和 dcast
用于多列的问题。我在 StackOverFlow 上浏览了一些帖子,但很多类似的帖子并不是我想要的。我将在下面进行解释。首先,
data
是关于问题原因和价值金额的。这是我的部分 data
:ID Type Problem1 Value1 Problem2 Value2 Problem3 Value3
1 A X 500 Y 1000 Z 400
2 A X 600 Z 700
3 B Y 700 Z 100
4 B W 200 V 200
5 C Z 500 V 500
6 C X 1000 W 100 V 900
其次,ID
是唯一的。 Type
包含三个(A
、B
和 C
)。有5个问题。
以ID == 1
为例。它是Type A
,包含3个问题(X
、Y
和Z
)。它的Problem X
值为500
,Problem Y
值为1000
,Problem Z
值为400
。以ID == 5
为例。它是Type C
,包含2个问题(Z
和 V
)。它的Problem Z
值为500
,Problem V
的值为500
。
第三,列 ID
,Type
,Problem1
,Problem2
和 Problem3
是 character
。 Value1
,Value2
和 Value3
是 numeric
。
我想要的结果是:
Type X Y Z W V
A 1100 1000 1100 0 0
B 0 700 100 200 200
C 1000 0 500 100 1400
我不知道如何恰当地在这里解释。我想将Type
分组,然后对每个问题的值进行求和。我认为这是关于长宽转换的内容。我在这里和这里找到了参考资料。第二个可能有用。但是,我不知道从哪里开始。有什么建议吗?
# data
dt <- fread("
ID Type Problem1 Value1 Problem2 Value2 Problem3 Value3
1 A X 500 Y 1000 Z 400
2 A X 600 Z 700
3 B Y 700 Z 100
4 B W 200 V 200
5 C Z 500 V 500
6 C X 1000 W 100 V 900", fill = T)
data.table
很棒,但像上面的回答那样复杂的语法并不直观。谢谢! - Peter Chen