R语言 标识组中除id以外的非重复行

piwo6bdm  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(163)

我有一个 Dataframe 与一堆信息(主要是字符)。我有2个ID列:一个链接到另一个 Dataframe ,并且具有唯一值,一个标识相同或几乎相同的行(分组ID)。我希望创建一个 Dataframe ,其中除了第一个ID列之外,组内的所有行都相同。基本上,我有df1,并且希望有df2。df1几乎没有缺失和一些不匹配的字符,我想清理它。2有没有一种方法可以识别一个组中不相同的行并替换它们(除了唯一的id)?

df <- data.frame(id = c(1:10),
                 title = c("abc", "aac", "abc", "def", "def", "dde", "ghi", NA, "jkl", "mno"), 
                 id2 = c(1,1,1,2,2,2,3,4,4,5))

df2 <- data.frame(id = c(1:10),
                 title = c("abc", "abc", "abc", "def", "def", "def", "ghi", "jkl", "jkl", "mno"), 
                 id2 = c(1,1,1,2,2,2,3,4,4,5))
4xrmg8kj

4xrmg8kj1#

您只需将每个组中的title列替换为它的第一个非NA成员:

library(tidyverse)

df %>%
  group_by(id2) %>%
  summarize(id = id, title = first(na.omit(title))) %>%
  select(c(2, 3, 1))
#> # A tibble: 10 x 3
#> # Groups:   id2 [5]
#>       id title   id2
#>    <int> <chr> <dbl>
#>  1     1 abc       1
#>  2     2 abc       1
#>  3     3 abc       1
#>  4     4 def       2
#>  5     5 def       2
#>  6     6 def       2
#>  7     7 ghi       3
#>  8     8 jkl       4
#>  9     9 jkl       4
#> 10    10 mno       5

相关问题