r - 用列中的整数替换单元格中的值
问题描述
如果我有如下数据框:
ID | 风险 | 种A | 种B | 种C | 种D | 种E | 种F |
---|---|---|---|---|---|---|---|
一个 | 40 | 不适用 | 不适用 | 文本1 | 不适用 | 不适用 | 文本2 |
乙 | 12 | 不适用 | 文本3 | 不适用 | 不适用 | 文本4 | 不适用 |
C | 65 | 不适用 | 不适用 | 不适用 | 文本5 | 不适用 | 文本6 |
如何以编程方式将每行中出现的“文本”值替换为“风险”列中的值(在每种情况下它们可能是不同的词),以便获得以下信息?
ID | 风险 | 种A | 种B | 种C | 种D | 种E | 种F |
---|---|---|---|---|---|---|---|
一个 | 40 | 不适用 | 不适用 | 40 | 不适用 | 不适用 | 40 |
乙 | 12 | 不适用 | 12 | 不适用 | 不适用 | 12 | 不适用 |
C | 65 | 不适用 | 不适用 | 不适用 | 65 | 不适用 | 65 |
解决方案
你可以试试下面的代码
df[-(1:2)] <- t(apply(df, 1, function(v) replace(v, !is.na(v), v["risk"])))[, -(1:2)]
这使
> df
id risk speciesA speciesB speciesC speciesD speciesE speciesF
1 A 40 <NA> <NA> 40 <NA> <NA> 40
2 B 12 <NA> 12 <NA> <NA> 12 <NA>
3 C 65 <NA> <NA> <NA> 65 <NA> 65
数据
> dput(df)
structure(list(id = c("A", "B", "C"), risk = c(40L, 12L, 65L),
speciesA = c(NA, NA, NA), speciesB = c(NA, "text3", NA),
speciesC = c("text1", NA, NA), speciesD = c(NA, NA, "text5"
), speciesE = c(NA, "text4", NA), speciesF = c("text2", NA,
"text6")), class = "data.frame", row.names = c(NA, -3L))
推荐阅读
- outlook-addin - 如何使用 OneDrive for Business 中的 addFileAttachmentAsync 添加文件
- c# - 在 C# 中通过 tcp/ip 连接发送图像
- php - 将自定义 WooCommerce 结帐字段导出到 ShipStation 自定义字段 2
- prestashop-1.7 - 如何将文本添加到微型列表块
- database - 单属性主键和第二范式(2NF)
- apostrophe - 撇号输入字段验证
- python - 如何将 Ariba 与 Python 连接起来?我正在寻找用 Python 阅读 Ariba 的文档,然后在它们上使用文本分析
- docker - Nexus 私有 docker pull 映像失败并出现 x509:无法验证证书错误
- java - dlopen() 中的 BUS_ADRERR
- reactjs - 使用react和redux删除后如何重新渲染相同的组件?