r - 根据列中的值创建新行?

我有一个包含 717 个唯一行的数据框,我现在要做的是,假设引用 ID 和加入 MeSH ID 不同,在下面创建新行,我将引用 ID 移动到与加入 MeSH ID 相同的列中,像我一样删除引用 MeSH ID 列,但保持行中的所有其他数据相同。因此,如果表中的一行当前看起来像这样:

疾病 加入网格ID 公司日> 作用方式 引用 MeSH ID 急性髓性白血病 D015470 吉利德 CD3激动剂 D007951 表>

我希望最终产品看起来像这样:

疾病 网格ID 公司日> 作用方式 急性髓性白血病 D015470 吉利德 CD3激动剂 急性髓性白血病 D007951 吉利德 CD3激动剂 表>

(总共有25列,但为了简单起见,我只显示了一些。)

一如既往,非常感谢任何帮助!

最佳答案

df <- read.table(header = T, text = "Disease    Joining_Mesh_ID Company Mode_of_Action  Reference_MeSH_ID
'Acute Myeloid Leukemia'    D015470 Gilead  'CD3 agonist'   D007951")

library(tidyverse)
df %>% pivot_longer(ends_with('_ID'), names_to = NULL, values_to = 'Mesh_ID')

#> # A tibble: 2 x 4
#>   Disease                Company Mode_of_Action Mesh_ID
#>   <chr>                  <chr>   <chr>          <chr>  
#> 1 Acute Myeloid Leukemia Gilead  CD3 agonist    D015470
#> 2 Acute Myeloid Leukemia Gilead  CD3 agonist    D007951

由 reprex package 创建于 2021-07-04 (v2.0.0)

https://stackoverflow.com/questions/68245375/

相关文章:

r - 从 R 中的其他数据帧更新列中的某些值

c++ - 什么是 std::vector vec{3};实际上呢?

android-studio - 无法加载 com.github.smarteist.autoima

rust - Crate 和 Package 之间的确切区别是什么?

php - Laravel Sail 部署就绪了吗

python - 如何在 python 中循环函数 def,直到我写下数字 0

java - 将小写的短工作日解析为 Java 8 的时间 DayOfWeek

c++ - 如何在 C++ 中分解指向成员的指针(获取类和成员类型)?

javascript - 一个数组中的字符串在另一个数组中存在多少次?

swift - 如何在 swift ui 的导航 View 中的大标题下方添加副标题?