【发布时间】:2020-08-13 15:51:13
【问题描述】:
那里! 我有一张桌子:
532 obs. of 44 variables
它看起来像这样:
A tibble: 10 x 44
ID PVD Vasculitis CVA CHF MI HTN COPD
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 11 NA NA NA NA NA 1 NA
2 22 1 NA 1 NA 1 1 1
3 33 NA NA NA NA 1 1 1
4 44 NA NA 1 NA NA NA 1
5 55 1 NA NA 1 1 1 1
6 66 NA NA NA 1 1 1 1
7 77 NA NA NA NA NA NA NA
8 88 1 NA 1 1 1 1 1
9 99 NA NA NA NA NA 1 1
10 1010 NA NA NA 1 1 1 NA
# ... with 36 more variables: TB <dbl>, Diabetes <dbl>,
# Liver <dbl>, CRF <dbl>, Dementia <dbl>, Obesity <dbl>,
# Hearing_loss <dbl>, Paraplegia <dbl>, `Peptic
# _ulcer` <dbl>, Autoimmune <dbl>, Breast_Cancer <dbl>,
# Colon_Cancer <dbl>, Anus_Cancer <dbl>,
# Stomach_Cancer <dbl>, Pancreas_Cancer <dbl>,
# Ovarian_Cancer <dbl>, Cervix_uteri_Cancer <dbl>,
# Uterus_Cancer <dbl>, Prostate_Cancer <dbl>,
# Melanoma <dbl>, Lymphoma <dbl>, Leukemia <dbl>,
# Thyroid_Cancer <dbl>, Head_and_neck_Cancer <dbl>,
# Kidney_Cancer <dbl>, Adrenal_Cancer <dbl>,
# Bone_Cancer <dbl>, Testicular_Cancer <dbl>,
# Skin_Cancer <dbl>, Urinary_Cancer <dbl>,
# Liver_Cancer <dbl>, Musculoskeletal_Cancer <dbl>,
# Multiple_myeloma <dbl>, CNS_Cancer <dbl>,
# Unknown_primary_Cancer <dbl>, solid <dbl>
所以第一列是唯一的 ID,后面的列是不同疾病的名称(不重复)。第 1 行中的值分别是是否存在疾病和不存在疾病。 例如,55 号患者(第 5 行)有“PVD”、“CHF”、“MI”、“HTN”、“COPD”等。 我还创建了一个带有癌症名称的向量(这些是第 19 到 43 列的名称)。 我想编写一个函数来检查这个表,如果列名与我的向量的癌症名称匹配,它将检查这一行(患者人数)在匹配列中是否有癌症(如果有标志 1 ),它会在最后一列添加一个名为“solid”的标志。至少一个巧合就足够了。对于所有的患者也是如此。 例如,同一个患者 55,如果他患有“结肠癌”(第 20 列),他应该在“固体”列中加 1,如果他患有其他癌症也没关系。 我尝试这样的事情,但没有成功,我被卡住了:
solid_tumor <- function(x){
x <- as.data.frame(x)
for (i in length(x)) {
if (colnames(x) %in% tumors) {
if(any(x==1)) {
x[i] <- 1
}
}
}
}
谢谢。
【问题讨论】:
-
我建议将您的函数视为始终在自己的环境中。添加
tumors作为要拉取的函数的参数。