首页 > 解决方案 > 如何根据“已选中”与“未选中”进行重塑

问题描述

我有一个数据集,其中包含类似于以下结构的数据:

ID       | Treatment=Induction Chemo | Treatment=Hypomethylating Chemo | Treatment=Consolidation Chemo
Patient1           Checked                       Unchecked                Unchecked
Patient2           Unchecked                     Checked                  Unchecked
Patient3           Unchecked                     Unchecked                Checked

我将如何格式化这些数据以使其看起来更像这样?

ID          Treatment
Patient1  Induction Chemo     
Patient2  Hypomethylating Chemo        
Patient3  Consolidation Chemo       

我想用 R 自动化这个,这有可能吗?我不确定 reshape 包是否具有这些功能。如果一切都失败了,我愿意手动编辑标题以从每个标题中删除“Treatment =”,但我宁愿自动完成所有操作。谢谢!

标签: rreshapereshape2xlconnect

解决方案


你可以试试这个,但是,作为一个警告,我假设你在特定列中没有重复的 check 值。如果是这种情况,这应该有效。

假设 df 是您的输入 data.frame。

df1 <- df
df1$Final_col <- do.call("paste0",data.frame(sapply(names(df), function(x)ifelse(df[,x] == "Checked", gsub("Treatment=","",x), '')), stringsAsFactors=F))

逻辑

在df 的所有列上使用ifelsein with condition == "Checked",然后使用 替换名称中的 "Treatment=" ,这些列上没有任何内容,这样 ("Treatment=") 之后的值将仅保留为文本可以得到,只要有成功的值为 TRUE,我们将用获得的值替换那些值。最后使用粘贴功能粘贴所有结果以仅获取一列。sapplygsubifelsegsubdo.call

资料

df <- structure(list(ID = c("Patient1", "Patient2", "Patient3"), `Treatment=Induction Chemo` = c("Checked", 
"Unchecked", "Unchecked"), `Treatment=Hypomethylating Chemo` = c("Unchecked", 
"Checked", "Unchecked"), `Treatment=Consolidation Chemo` = c("Unchecked", 
"Unchecked", "Checked")), .Names = c("ID", "Treatment=Induction Chemo", 
"Treatment=Hypomethylating Chemo", "Treatment=Consolidation Chemo"
), class = "data.frame", row.names = c(NA, -3L))

输出:

您可以检查Final_col答案输出,您可以删除其他列,我保留它们以便您可以比较输入和输出。

> df1
        ID Treatment=Induction Chemo Treatment=Hypomethylating Chemo
1 Patient1                   Checked                       Unchecked
2 Patient2                 Unchecked                         Checked
3 Patient3                 Unchecked                       Unchecked
  Treatment=Consolidation Chemo             Final_col
1                     Unchecked       Induction Chemo
2                     Unchecked Hypomethylating Chemo
3                       Checked   Consolidation Chemo

推荐阅读