我有一个非常简单的数据集,其中一列用于ID号,一列用于该人的DOB。
例:
x_df <- data.frame(stringsAsFactors=FALSE,
ID = c("ID-1", "ID-2", "ID-2", "ID-3", "ID-4", "ID-5"),
DOB = c("4/16/1955", "9/4/1976", "9/4/1976", "4/16/1955", "2/10/1995",
"11/29/1980")
)
我正在尝试用 R 编写一个代码,该代码将比较所有 DOB 并在 DOB 相同但 ID 不同时打印 ID 和 DOB。
有什么建议吗?
让我们按DOB排列数据,可以比较对
library(tidyverse)
x_df %>%
group_by(DOB) %>%
mutate(idord = paste0("x", 1:n()) ) %>%
spread(idord, ID) %>%
filter(x1 != x2)
结果是
DOB x1 x2
<chr> <chr> <chr>
1 4/16/1955 ID-1 ID-3
如果你可能有超过 2 对,那么你可以使用它
x_df %>%
group_by(DOB) %>%
summarise(idcount = n_distinct(ID), IDall = paste(ID, collapse = "|")) %>%
filter(idcount > 1)
一个单元格中的 ID 和所有 ID 的数量
DOB idcount IDall
<chr> <int> <chr>
1 4/16/1955 2 ID-1|ID-3