如何在R中重塑data.table或data.farme而不增加频率?

如何在R中重塑data.table或data.farme而不增加频率?,r,data.table,reshape2,contingency,R,Data.table,Reshape2,Contingency,我正在尝试将以下data.table重新格式化为列联表(不完全是因为我不想将频率作为值,我只想要0或1): Df: 我尝试了以下两种方法,但得到了相同的结果: 第一: Contingency<-with(Df, table(ID,CC)) Diag6<- cbind(ID = rownames(Contingency), apply(Contingency, 2 , as.character)) 并尝试: Df<- data.table(dcast(Df,ID~CC,valu

我正在尝试将以下data.table重新格式化为列联表(不完全是因为我不想将频率作为值,我只想要0或1):

Df:

我尝试了以下两种方法,但得到了相同的结果:

第一:

Contingency<-with(Df, table(ID,CC))
Diag6<- cbind(ID = rownames(Contingency), apply(Contingency, 2 , as.character))
并尝试:

Df<- data.table(dcast(Df,ID~CC,value.var="Value"),key="ID")
这里我不想要频率,我只想要如果它存在,值应该是1,否则为0:

ID       CC115  CC2 CC39    CC6
990081899A  1   1   1   0
990002362D  1   1   0   1
非常感谢您的建议。

您可以将自己的函数传递给
dcast

dcast(DF,  ID~CC, fun = function(x) as.integer(length(x)>0))
# Using CC as value column: use value.var to override.
#           ID CC115 CC2 CC39 CC6
# 1 990002362D     1   1    0   1
# 2 990042716D     0   1    0   0
# 3 990081899A     1   1    1   0
或者通过传递包含唯一组合的简化data.frame

 dcast(unique(DF), ID~CC,fun=length,value.var = 'CC')
您可以通过将自己的函数传递给
dcast

dcast(DF,  ID~CC, fun = function(x) as.integer(length(x)>0))
# Using CC as value column: use value.var to override.
#           ID CC115 CC2 CC39 CC6
# 1 990002362D     1   1    0   1
# 2 990042716D     0   1    0   0
# 3 990081899A     1   1    1   0
或者通过传递包含唯一组合的简化data.frame

 dcast(unique(DF), ID~CC,fun=length,value.var = 'CC')
您可以通过将自己的函数传递给
dcast

dcast(DF,  ID~CC, fun = function(x) as.integer(length(x)>0))
# Using CC as value column: use value.var to override.
#           ID CC115 CC2 CC39 CC6
# 1 990002362D     1   1    0   1
# 2 990042716D     0   1    0   0
# 3 990081899A     1   1    1   0
或者通过传递包含唯一组合的简化data.frame

 dcast(unique(DF), ID~CC,fun=length,value.var = 'CC')
您可以通过将自己的函数传递给
dcast

dcast(DF,  ID~CC, fun = function(x) as.integer(length(x)>0))
# Using CC as value column: use value.var to override.
#           ID CC115 CC2 CC39 CC6
# 1 990002362D     1   1    0   1
# 2 990042716D     0   1    0   0
# 3 990081899A     1   1    1   0
或者通过传递包含唯一组合的简化data.frame

 dcast(unique(DF), ID~CC,fun=length,value.var = 'CC')

我相信这已经在以前的某个地方得到了回答,但是
table
应该能够做到这一点:

with(unique(dat), table(ID,CC) )

#            CC
#ID           CC115 CC2 CC39 CC6
#  990002362D     1   1    0   1
#  990042716D     0   1    0   0
#  990081899A     1   1    1   0
您可以像这样包装上面的内容:

as.data.frame.matrix(with(unique(dat), table(ID,CC) ))
…如果你喜欢这个输出

#           CC115 CC2 CC39 CC6
#990002362D     1   1    0   1
#990042716D     0   1    0   0
#990081899A     1   1    1   0

我相信这已经在以前的某个地方得到了回答,但是
table
应该能够做到这一点:

with(unique(dat), table(ID,CC) )

#            CC
#ID           CC115 CC2 CC39 CC6
#  990002362D     1   1    0   1
#  990042716D     0   1    0   0
#  990081899A     1   1    1   0
您可以像这样包装上面的内容:

as.data.frame.matrix(with(unique(dat), table(ID,CC) ))
…如果你喜欢这个输出

#           CC115 CC2 CC39 CC6
#990002362D     1   1    0   1
#990042716D     0   1    0   0
#990081899A     1   1    1   0

我相信这已经在以前的某个地方得到了回答,但是
table
应该能够做到这一点:

with(unique(dat), table(ID,CC) )

#            CC
#ID           CC115 CC2 CC39 CC6
#  990002362D     1   1    0   1
#  990042716D     0   1    0   0
#  990081899A     1   1    1   0
您可以像这样包装上面的内容:

as.data.frame.matrix(with(unique(dat), table(ID,CC) ))
…如果你喜欢这个输出

#           CC115 CC2 CC39 CC6
#990002362D     1   1    0   1
#990042716D     0   1    0   0
#990081899A     1   1    1   0

我相信这已经在以前的某个地方得到了回答,但是
table
应该能够做到这一点:

with(unique(dat), table(ID,CC) )

#            CC
#ID           CC115 CC2 CC39 CC6
#  990002362D     1   1    0   1
#  990042716D     0   1    0   0
#  990081899A     1   1    1   0
您可以像这样包装上面的内容:

as.data.frame.matrix(with(unique(dat), table(ID,CC) ))
…如果你喜欢这个输出

#           CC115 CC2 CC39 CC6
#990002362D     1   1    0   1
#990042716D     0   1    0   0
#990081899A     1   1    1   0
只需使用
table(DF)
即可为您提供布局。
然后您可以使用符号将所有正值转换为
1

     sign(table(DF))

                CC
    ID           CC115 CC2 CC39 CC6
      990002362D     1   1    0   1
      990042716D     0   1    0   0
      990081899A     1   1    1   0
只需使用
table(DF)
即可为您提供布局。
然后您可以使用符号将所有正值转换为
1

     sign(table(DF))

                CC
    ID           CC115 CC2 CC39 CC6
      990002362D     1   1    0   1
      990042716D     0   1    0   0
      990081899A     1   1    1   0
只需使用
table(DF)
即可为您提供布局。
然后您可以使用符号将所有正值转换为
1

     sign(table(DF))

                CC
    ID           CC115 CC2 CC39 CC6
      990002362D     1   1    0   1
      990042716D     0   1    0   0
      990081899A     1   1    1   0
只需使用
table(DF)
即可为您提供布局。
然后您可以使用符号将所有正值转换为
1

     sign(table(DF))

                CC
    ID           CC115 CC2 CC39 CC6
      990002362D     1   1    0   1
      990042716D     0   1    0   0
      990081899A     1   1    1   0

快速解决方案可能只是将0以外的值替换为1tanks Ananta,这是最后一个选项,但我的数据太大,因此我要避免额外的代码行。快速解决方案可能只是将0以外的值替换为1tanks Ananta,这是最后一个选项,但我的数据太大,因此我要避免额外的代码行。快速解决方法可能只是将0以外的值替换为1行Ananta,这是最后一个选项,但我的数据太大,因此我要避免额外的代码行。快速解决方法可能只是将0以外的值替换为1行Ananta,这是最后一个选项,但我的数据太大,所以我避免了额外的代码行。