如何在R中重塑data.table或data.farme而不增加频率?
我正在尝试将以下data.table重新格式化为列联表(不完全是因为我不想将频率作为值,我只想要0或1): Df: 我尝试了以下两种方法,但得到了相同的结果: 第一:如何在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
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,这是最后一个选项,但我的数据太大,所以我避免了额外的代码行。