从长格式转换为宽格式
acast from long to wide format
我有一个 data.frame "uiq",格式如下:
CNS_CD PROD_CD QTY
1 M00000001 CFGO301WABU 1
2 M00000002 DFGK122EARE 1
3 M00000002 CWGO154COGY 1
4 M00000004 CWGC003COTA 1
5 M00000005 CWGC002COTA 1
6 M00000005 CFDC002COTA 1
7 M00000006 CFDT202AISL 1
8 M00000007 CFDO309FIPE 1
9 M00000007 CWGO314WABU 1
10 M00000007 CWGO326EAVI 1
11 M00000008 CFDO203COOW 1
12 M00000009 CWGK323EABL 1
13 M00000010 CFDO326EAVI 1
14 M00000010 CWGT337EANY 1
15 M00000011 CFDO203FIVI 1
我需要将这些数据转换成一个矩阵,这样我就可以计算出 PROD_CD 中每个项目相对于每个 CNS_CD.
的数量
如果某些 PROD_CD 未针对 CNS_CD 列出,它仍然应该存在于值为 0 的矩阵中。尝试将其转换为具有计数的用户项目矩阵格式。
class(CNS_CD),class(PROD_CD) 是 "character"。
我试过这个:
acast(data = uiq,formula = CPH_CNS_CD~PROD_CD,fun.aggregate = count,value.var = uiq$QTY)
并收到此错误:
Error: value.var (1111111111111111111111111111111111111111111111111111
In addition: Warning message:
In if (!(value.var %in% names(data))) { :
the condition has length > 1 and only the first element will be used
当 fun.aggregate 和 value.var 参数未提供相同的功能时,它会以某种方式工作。这里的问题是什么,或者是否还有其他方法可以实现所需的格式?
CNS_CD CFGO301WABU DFGK122EARE CWGO154COGY CWGC003COTA .....
M00000001 1 0 0 0
M00000002 0 1 1 0
M00000004 0 0 0 1
我们可以使用length
acast(data = uiq,formula = CNS_CD~PROD_CD,fun.aggregate = length,value.var = "QTY")
我有一个 data.frame "uiq",格式如下:
CNS_CD PROD_CD QTY
1 M00000001 CFGO301WABU 1
2 M00000002 DFGK122EARE 1
3 M00000002 CWGO154COGY 1
4 M00000004 CWGC003COTA 1
5 M00000005 CWGC002COTA 1
6 M00000005 CFDC002COTA 1
7 M00000006 CFDT202AISL 1
8 M00000007 CFDO309FIPE 1
9 M00000007 CWGO314WABU 1
10 M00000007 CWGO326EAVI 1
11 M00000008 CFDO203COOW 1
12 M00000009 CWGK323EABL 1
13 M00000010 CFDO326EAVI 1
14 M00000010 CWGT337EANY 1
15 M00000011 CFDO203FIVI 1
我需要将这些数据转换成一个矩阵,这样我就可以计算出 PROD_CD 中每个项目相对于每个 CNS_CD.
的数量
如果某些 PROD_CD 未针对 CNS_CD 列出,它仍然应该存在于值为 0 的矩阵中。尝试将其转换为具有计数的用户项目矩阵格式。
class(CNS_CD),class(PROD_CD) 是 "character"。 我试过这个:
acast(data = uiq,formula = CPH_CNS_CD~PROD_CD,fun.aggregate = count,value.var = uiq$QTY)
并收到此错误:
Error: value.var (1111111111111111111111111111111111111111111111111111
In addition: Warning message:
In if (!(value.var %in% names(data))) { :
the condition has length > 1 and only the first element will be used
当 fun.aggregate 和 value.var 参数未提供相同的功能时,它会以某种方式工作。这里的问题是什么,或者是否还有其他方法可以实现所需的格式?
CNS_CD CFGO301WABU DFGK122EARE CWGO154COGY CWGC003COTA .....
M00000001 1 0 0 0
M00000002 0 1 1 0
M00000004 0 0 0 1
我们可以使用length
acast(data = uiq,formula = CNS_CD~PROD_CD,fun.aggregate = length,value.var = "QTY")