【问题标题】:Removing duplicate rows from one column without losing data from another column从一列中删除重复行而不丢失另一列中的数据
【发布时间】:2021-04-18 18:57:18
【问题描述】:

如果有人问过这个问题,我深表歉意,但我遇到的解决方案似乎对我不起作用。

我有一个数据集,最初是多个 Excel 表,其中包含相同主题的不同变量。我能够将数据导入 r 并使用以下方法组合成一个数据框:

x1_data

excel_sheets(路径 = x1_data)

tab_names

list_all

read_excel(path = x1_data, sheet = x))

str(list_all)

df

df

但是,我现在每个主题都有很多重复的行,因为每张纸基本上都添加在前一张纸的下方。像这样的:

表 1

  • ID:1,2
  • 年龄:32、29
  • 性别:男,女

表 2

  • ID:1、2
  • 体重:75、89
  • 身高:157、146

合并

  • ID:1、2、1、2
  • 年龄:32、29、NA、NA
  • 性别:男、女、北美、北美
  • 重量:NA、NA、75、89
  • 身高:北美、北美、157、146

我似乎无法弄清楚如何在不丢失属于这些行的列中的数据的情况下删除重复的 ID 行。我尝试了聚合和 group_by 没有成功。我所追求的是:

合并

  • ID:1、2
  • 年龄:32、29
  • 性别:男,女
  • 体重:75、89
  • 身高:157、146

任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: r dplyr duplicates aggregate


    【解决方案1】:

    这是一个可能的解决方案:

    library(tidyverse)
    
    df <- tibble(ID = c(1, 2, 1, 2), 
                 Age = c(32, 29, NA, NA), 
                 Sex = c("M", "F", NA, NA), 
                 Weight = c(NA, NA, 75, 89), 
                 Height = c(NA, NA, 157, 146))
    
    df1 <- df %>% filter(is.na(Age)) %>% select(ID, Weight, Height)
    df2 <- df %>% filter(!is.na(Age)) %>% select(ID, Age, Sex)
    
    df.merged <- df2 %>% left_join(df1, by = "ID")
    

    对于未来的问题,请提供已格式化的数据样本,以便更轻松地使用。

    【讨论】:

      猜你喜欢
      • 2018-12-01
      • 2014-07-23
      • 1970-01-01
      • 1970-01-01
      • 2021-12-02
      • 1970-01-01
      • 1970-01-01
      • 2021-09-09
      • 1970-01-01
      相关资源
      最近更新 更多