【发布时间】:2021-04-21 17:15:32
【问题描述】:
我有一个包含 41 列数据的大型数据框 df。前 40 列具有所有相似的变量名称 TD1、TD2、TD3 .... TD40,其中包含字符。最后一列是 Catflag,其值取决于其他 40 列数据中包含的代码。
这是数据框的一小部分。
TD1 TD2 TD3 ...... TD40 Catflag 1345 4673 3908 2348 行程 4721 9854 5732 O763 糖尿病 5739 6894 3957 5864 心脏 967D 6046 1345 4T67 行程 ......
我想做的是让 R 查看每一行,如果在 40 列数据 (T1-T40) 中的任何位置找到代码 (5984、6046、3331),它将更改/替换 Catflag 中的值将该行改为“手术”。如果它没有找到 3 个值中的任何一个,则该行的 Catflag 值保持不变。因此,在上面的数据框中,只有第 4 行会从“Stroke”变为“Surgery”
我使用以下 R 代码来完成这项工作
逐行()%>% df$Catflag[any(c_across(starts_with("TD")) %in% c("5984", "6046", "3331"))]
它不起作用并得到“无效(NULL)左侧赋值”错误消息。 尝试对命令进行细微的更改和变化,但无济于事。
上述命令适用于多种条件,例如以下示例: df$Catflag[(df$TD1 == "3331") & (df$TD4 == "7856")]
只是不知道如何使它适用于超过 40 列的相同条件???
任何建议将不胜感激。 谢谢
【问题讨论】:
标签: r dataframe conditional-statements multiple-columns