Предположим, у меня есть этот набор данных:Игнорировать некоторые вещи с n_distinct() в dplyr
test <- data.frame(thing = c(rep(1, 4),
rep(2, 4),
rep(3, 4),
rep(4, 3),
rep(5, 1)),
thing2 = c(c("a", "b", "c", "c"),
c("a", "b", "c", "d"),
c("a", "b", "b", "b"),
c("a", "b", "c"),
c("d")))
, и я хочу знать, сколько индивидуальные thing2
связаны с каждым thing
так,
test %>%
group_by(thing) %>%
summarize(nDistinct = n_distinct(thing2))
дает me
thing nDistinct
1 1 3
2 2 4
3 3 2
4 4 3
5 5 1
который хорошо. Но, что я действительно заинтересован в количестве различных вещей, которые неd
на каждом уровне фактора.
Я мог бы переписать заявление выше и включают в себя filter()
так что
test %>%
group_by(thing) %>%
filter(thing2 != "d") %>%
summarize(nDistinct = n_distinct(thing2))
дает мне
thing nDistinct
1 1 3
2 2 3
3 3 2
4 4 3
, но я теряю тот факт, что, когда thing == 5
, он потеряется из полученного кадра данных.
То, что я хотел бы видеть это dplyr
(или что-то другое) утверждение, что дает мне
thing nDistinct
1 1 3
2 2 3
3 3 2
4 4 3
5 5 0
Возможно ли это?
У меня есть подозрительное подозрение, что я пропускаю что-то очень простое здесь.
Вы всегда можете использовать «традиционную» длину (уникальную (вещь [thing2! = "D"])) ' –
Я знал, что это было что-то простое, что я проглядывал! Между этим и ответом ниже я стучу головой на стол, удивляясь, почему я этого не видел! – Steven
хорошая тактика, чтобы его запомнить;) –