首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重新排列两列,以便相似的元素在一列中

重新排列两列,以便相似的元素在一列中
EN

Stack Overflow用户
提问于 2020-09-02 03:42:11
回答 1查看 61关注 0票数 0

我有一个看起来很简单的问题。我只是想不出如何搜索一个函数来做这件事(或者找到一个已经被问过的类似问题的方法:-/ )。我目前有一个数据帧,看起来像这样:

代码语言:javascript
复制
sp1                           sp2                            dist
Viola_canadensis_ott1089589 Dasiphora_fruticosa_ott782136   8.043604e-311
Viola_nuttallii_ott203476   Dasiphora_fruticosa_ott782136   6.702821e-311
Parnassia_fimbriata_ott1035577  Dasiphora_fruticosa_ott782136   4.691921e-311
Paxistima_myrsinites_ott381954  Dasiphora_fruticosa_ott782136   4.692195e-311
Dasiphora_fruticosa_ott782136   Sibbaldia_procumbens_ott176706  1.340783e-311
Dasiphora_fruticosa_ott782136   Fragaria_virginiana_ott1004791  2.680745e-311
Dasiphora_fruticosa_ott782136   Fragaria_vesca_ott852873    2.681018e-311
Dasiphora_fruticosa_ott782136   Geum_rossii_ott255461   2.681292e-311

这个框架只有3列和大约11000行。请注意,我有50个物种希望以与此物种相同的方式部分“移动”到sp1列,另有大约250个物种要移动到sp2列;我已经在一个载体中拥有这50个物种。

我想要做的是重新排列数据框,使其看起来像这样:

代码语言:javascript
复制
sp1                           sp2                            dist
Dasiphora_fruticosa_ott78213    Viola_canadensis_ott1089589 8.043604e-311
Dasiphora_fruticosa_ott78213    Viola_nuttallii_ott203476   6.702821e-311
Dasiphora_fruticosa_ott78213    Parnassia_fimbriata_ott1035577  4.691921e-311
Dasiphora_fruticosa_ott78213    Paxistima_myrsinites_ott381954  4.692195e-311
Dasiphora_fruticosa_ott782136   Sibbaldia_procumbens_ott176706  1.340783e-311
Dasiphora_fruticosa_ott782136   Fragaria_virginiana_ott1004791  2.680745e-311
Dasiphora_fruticosa_ott782136   Fragaria_vesca_ott852873    2.681018e-311
Dasiphora_fruticosa_ott782136   Geum_rossii_ott255461   2.681292e-311

我知道使用dplyr一定很简单!我以前从来没有遇到过这样的问题。

如果需要的话,下面是一个更长的例子:

代码语言:javascript
复制
key_species <- c("Dasiphora_fruticosa_ott782136", "Erythronium_grandiflorum_ott653293")

        sp1                            sp2                                 dist
    Aquilegia_elegantula_ott668865  Erythronium_grandiflorum_ott653293  6.703914e-312
    Aquilegia_coerulea_ott192307    Erythronium_grandiflorum_ott653293  6.703914e-312
    Corydalis_caseana_ott3944909    Erythronium_grandiflorum_ott653293  6.703914e-312
    Erythronium_grandiflorum_ott653293  Selaginella_densa_ott1095392    6.701177e-312
    Erythronium_grandiflorum_ott653293  Selaginella_scopulorum_ott5923066   6.701177e-312
    Erythronium_grandiflorum_ott653293  Blepharostoma_trichophyllum_ott390604   1.340235e-311
    Viola_canadensis_ott1089589 Dasiphora_fruticosa_ott782136   8.043604e-311
    Viola_nuttallii_ott203476   Dasiphora_fruticosa_ott782136   6.702821e-311
    Parnassia_fimbriata_ott1035577  Dasiphora_fruticosa_ott782136   4.691921e-311
    Paxistima_myrsinites_ott381954  Dasiphora_fruticosa_ott782136   4.692195e-311
    Dasiphora_fruticosa_ott782136   Sibbaldia_procumbens_ott176706  1.340783e-311
    Dasiphora_fruticosa_ott782136   Fragaria_virginiana_ott1004791  2.680745e-311
    Dasiphora_fruticosa_ott782136   Fragaria_vesca_ott852873    2.681018e-311
    Dasiphora_fruticosa_ott782136   Geum_rossii_ott255461   2.681292e-311

期望的结果:

代码语言:javascript
复制
        sp1                            sp2                                 dist
    Erythronium_grandiflorum_ott653293  Aquilegia_elegantula_ott668865  6.703914e-312
    Erythronium_grandiflorum_ott653293  Aquilegia_coerulea_ott192307    6.703914e-312
    Erythronium_grandiflorum_ott653293   Corydalis_caseana_ott3944909   6.703914e-312
    Erythronium_grandiflorum_ott653293  Selaginella_densa_ott1095392    6.701177e-312
    Erythronium_grandiflorum_ott653293  Selaginella_scopulorum_ott5923066   6.701177e-312
    Erythronium_grandiflorum_ott653293  Blepharostoma_trichophyllum_ott390604   1.340235e-311
    Dasiphora_fruticosa_ott78213    Viola_canadensis_ott1089589 8.043604e-311
    Dasiphora_fruticosa_ott78213    Viola_nuttallii_ott203476   6.702821e-311
    Dasiphora_fruticosa_ott78213    Parnassia_fimbriata_ott1035577  4.691921e-311
    Dasiphora_fruticosa_ott78213    Paxistima_myrsinites_ott381954  4.692195e-311
    Dasiphora_fruticosa_ott782136   Sibbaldia_procumbens_ott176706  1.340783e-311
    Dasiphora_fruticosa_ott782136   Fragaria_virginiana_ott1004791  2.680745e-311
    Dasiphora_fruticosa_ott782136   Fragaria_vesca_ott852873    2.681018e-311
    Dasiphora_fruticosa_ott782136   Geum_rossii_ott255461   2.681292e-311

很抱歉,如果这是一个转帖,我真的想不出一个好的方法来制定一个搜索来找到类似的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-02 05:05:40

我会尝试创建新的sp列,而不是修改已有的列。然后,当它们看起来不错时,您可以删除旧的列并重命名新的列。

代码语言:javascript
复制
data %>%
  mutate(new_sp1 = case_when(
      sp1 %in% key_species ~ sp1,
      sp2 %in% key_species ~ sp2,
      TRUE ~ NA_character_
    ),
    new_sp2 = case_when(
      sp1 %in% key_species ~ sp2,
      sp2 %in% key_species ~ sp1,
      TRUE ~ NA_character_
    )
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63694405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档