【问题标题】:Consolidating non-duplicate rows in R合并 R 中的非重复行
【发布时间】:2018-07-25 15:48:15
【问题描述】:

我用谷歌搜索了一堆,可以在任何地方找到答案,但也许我无法用几句话很好地解释它。

Coffee|     |Steve

Coffee| Cup |     |

Turkey| Fork|     |

      |Fork |Mike

我想获取这四行中的数据并将其合并为两行以便显示。

Coffee|Cup|Steve

Turkey|Fork|Mike

如果有任何帮助,我将不胜感激。我是全新的代码。从长远来看,我认为它在工作中是有益的和更快的。

谢谢

【问题讨论】:

  • 您可以发布示例数据吗?请使用dput(df) 的输出编辑问题。或者,如果 dput(head(df, 20)) 的输出太大。 (df 是您的数据集的名称。)
  • 很遗憾无法提供示例数据
  • This quesiton 看起来很相似,可能会有所帮助。
  • 如果您不确定如何将示例数据添加到您的问题中,this SO question 有很好的建议和特定于 R 的示例

标签: r data-management


【解决方案1】:

使用library(tidyverse) 并对您的数据集做出大胆的假设:

df <- data.frame(food = c("Coffee","Coffee","Turkey", NA), 
             utensil = c(NA, "Cup", "Fork", "Fork"), 
             name = c("Steve", NA, NA, "Mike"))
df <- df %>%
  group_by(food) %>%
  arrange(utensil) %>%
  fill(utensil) %>%
  group_by(utensil) %>%
  arrange(food) %>%
  fill(food) %>%
  drop_na()

【讨论】:

    【解决方案2】:

    我认为最好将表分解为列表,删除 NA 值,然后取唯一。然后你可以转换回数据框。我这里用read_r做数据框,剩下的都是Base R。

    myTab <- readr::read_csv("h1,h2,h3
    Coffee,,Steve
    Coffee,Cup,
    Turkey,Fork,
    ,Fork,Mike")
    
    myTab
    
    ## # A tibble: 4 x 3
    ##   h1     h2    h3   
    ##   <chr>  <chr> <chr>
    ## 1 Coffee NA    Steve
    ## 2 Coffee Cup   NA   
    ## 3 Turkey Fork  NA   
    ## 4 NA     Fork  Mike 
    
    myTab <- lapply(myTab, na.omit)
    myTab <- lapply(myTab, as.character)
    myTab <- lapply(myTab, unique)
    
    myTab <- data.frame(myTab)
    
    myTab
    
    ##      h1   h2    h3
    ## 1 Coffee  Cup Steve
    ## 2 Turkey Fork  Mike
    

    【讨论】:

      猜你喜欢
      • 2016-02-11
      • 2016-01-09
      • 2021-11-23
      • 2013-12-04
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多