r - 如何根据“已选中”与“未选中”进行重塑
问题描述
我有一个数据集,其中包含类似于以下结构的数据:
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 =”,但我宁愿自动完成所有操作。谢谢!
解决方案
你可以试试这个,但是,作为一个警告,我假设你在特定列中没有重复的 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 的所有列上使用ifelse
in with condition == "Checked",然后使用 替换名称中的 "Treatment=" ,这些列上没有任何内容,这样 ("Treatment=") 之后的值将仅保留为文本可以得到,只要有成功的值为 TRUE,我们将用获得的值替换那些值。最后使用粘贴功能粘贴所有结果以仅获取一列。sapply
gsub
ifelse
gsub
do.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
推荐阅读
- python - 使用 CV2 为图像添加绽放效果
- python - yt-dlp 'rate-limit' 不限制 Python 脚本中的速度
- python - 我正在尝试使用 python 中的请求登录网站
- html - 垂直对齐表格
- c# - C#泛型类作为泛型参数
- f# - 我不明白这个映射元组键编译错误,在 F#
- java - 如何检测哪个库或代码依赖于本机库(libmupdf.so)
- c# - 将用户输入更新到基于 C# 服务的数据库中(使用文本框、MonthCalendars 和 Comboboxes)
- mongodb - Mongod.service 无法启动
- javascript - 拦截器中的 axois react-keycloak/web 令牌