これを実行する方法はたくさんありますが、そのうちのいくつかは上記で示唆されています。私は通常重複/悪いケースを見つけて削除するためにdplyr
バージョンを使用します。あなたの目的に応じて、さまざまな出力の例があります。
library(dplyr)
# example with one bad case
dt = data.frame(Name = c("david","davud","John","John","megan"),
ID = c(1,1,2,3,3), stringsAsFactors = F)
# spot names with more than 1 unique IDs
dt %>%
group_by(Name) %>%
summarise(NumIDs = n_distinct(ID)) %>%
filter(NumIDs > 1)
# # A tibble: 1 x 2
# Name NumIDs
# <chr> <int>
# 1 John 2
# spot names with more than 1 unique IDs and the actual IDs
dt %>%
group_by(Name) %>%
mutate(NumIDs = n_distinct(ID)) %>%
filter(NumIDs > 1) %>%
ungroup()
# # A tibble: 2 x 3
# Name ID NumIDs
# <chr> <dbl> <int>
# 1 John 2 2
# 2 John 3 2
# spot names with more than 1 unique IDs and the actual IDs - alternative
dt %>%
group_by(Name) %>%
mutate(NumIDs = n_distinct(ID)) %>%
filter(NumIDs > 1) %>%
group_by(Name, NumIDs) %>%
summarise(IDs = paste0(ID, collapse=",")) %>%
ungroup()
# # A tibble: 1 x 3
# Name NumIDs IDs
# <chr> <int> <chr>
# 1 John 2 2,3
一意の名前、IDを追加し、バック – Wen
それをマージした後の長さが異なることになるので、私は、元のデータセットにユニーク(名前)を使用した後にマージすることはできないでしょうか? – Rachel
あなたはマージすることができます。マージは共通の値に基づくルックアップ関数です。 Accessまたはvlookupのdlookup、ExcelまたはCalcのhlookupに似ています。 –