我显然是编写R代码的新手。 我已经从stackoverflow尝试了多个解决方案来解决我的问题,但我仍然陷入困境。
我的数据集是类癌,患有小肠癌的患者,有多个变量。
我想知道如何分配不同的变量
carcinoid$met_any - with metastatic disease 1=yes, 2=no(computed variable)
carcinoid$liver_mets_y_n - liver metastases 1=yes, 2=no
carcinoid$regional_lymph_nodes_y_n - regional lymph nodes 1=yes, 2=no
peritoneal_carcinosis_y_n - peritoneal carcinosis 1=yes, 2=no
我试过这个接近我想要的结果的解决方案
ddply(carcinoid, .(carcinoid$met_any), summarize,
livermetastases=sum(carcinoid$liver_mets_y_n=="1"),
regionalmets=sum(carcinoid$regional_lymph_nodes_y_n=="1"),
pc=sum(carcinoid$peritoneal_carcinosis_y_n=="1"))
结果为:
carcinoid$met_any livermetastases regionalmets pc
1 1 21 46 7
2 2 21 46 7
现在,我预计2(=没有转移)的行是空的。我也希望列类似物中的行$ met_any给出患者数量。
如果有人可以帮助我,我将非常感激! 约翰
修改
我的数据集,虽然列号为:1,4328,31,33
1 = YES2 =无
case_nr met_any liver_mets_y_n regional_lymph_nodes_y_n pc
1 1 1 1 2
2 1 2 1 2
3 2 2 2 2
4 1 2 1 1
5 1 2 1 1
所需的输出 - 我想计算1:s和2:s的数字,如果有效,所有1:s应该以met_any = 1行结束
nr liver_mets regional_lymph_nodes pc
met_any=1 4 1 4 2
met_any=2 1 4 1 3
修改
虽然我可能在我的问题中非常不清楚,但在你的帮助下,我可以制作我需要的桌子!
setDT(carcinoid)[,lapply(.SD,table),.SDcols=c(43,28,31,33,17)]
给出
met_any lymph_nod liver_met paraortal extrahep
1: 50 46 21 6 15
2: 111 115 140 151 146
我非常感激! @mtoto提供了解决方案 约翰
答案 0 :(得分:1)
根据您的示例数据,此data.table
方法有效:
library(data.table)
setDT(df)[,lapply(.SD,table),.SDcols=c(2:5)]
# met_any liver_mets_y_n regional_lymph_nodes_y_n pc
# 1: 4 1 4 2
# 2: 1 4 1 3