首页 > 解决方案 > 重复 R 中的特定行

问题描述

我想在第 1 列中重复每一行有“肺气肿/慢性支气管炎”。对于每一个这样的重复,我想在第 2 列中有“肺气肿”作为 2 行之一,在第 2 列有“慢性支气管炎”另一个。我不确定我是否解释得很好 - 很抱歉造成混乱。

目前是这样的: 第 1 列示例:皮肤癌 直肠癌 肺气肿/慢性支气管炎

第 2 列示例:皮肤肿瘤 直肠肿瘤 NA

这就是我想要的样子: 第 1 列 示例:皮肤癌 直肠癌 肺气肿 慢性支气管炎

第 2 列示例: 皮肤肿瘤 直肠肿瘤 肺气肿 慢性支气管炎

标签: rrepeat

解决方案


从描述中并不完全清楚,但这可能会对您有所帮助。

假设您有一个如下所示的 data.frame:

                          col1             col2
1                  skin cancer   Skin Neoplasms
2                rectal cancer Rectal Neoplasms
3 emphysema/chronic bronchitis             <NA>

并且您想要拆分带有斜杠 (/) 的条目,例如在肺气肿和慢性支气管炎之间。

您可以使用separate_rowsfrom tidyr,并使用 '/' 作为分隔符。您还可以包括coalesce使用条目更新第 2 列(替换丢失的数据),例如第 1 列。据我所知,这与您的预期输出相匹配。

library(tidyverse)

df %>%
  separate_rows(col1, sep = "/") %>%
  mutate(col2 = coalesce(col1))

输出

  col1               col2              
  <chr>              <chr>             
1 skin cancer        skin cancer       
2 rectal cancer      rectal cancer     
3 emphysema          emphysema         
4 chronic bronchitis chronic bronchitis

推荐阅读