在r中找到匹配或不匹配的值

时间:2018-12-17 17:31:30

标签: r tidyr

我有一个中等大小的数据框,就像我在下面制作的一样(尽管有几列),我想在其中查找是否有任何“ id”具有不同的“ letter” 我想有一个简单的方法可以做到这一点,也许是用提迪尔?

df<-data.frame("id"=c(1, 1, 2, 3, 3, 3, 4, 4, 5, 6, 6), "letter"=c("f", "f", 
"r", "r", "k", "k", "k", "k", "r", "f", "r"))

编辑:我正在尝试查找具有多个字母的“ id”。即在此df id 3和6中。我对哪个“字母”(尽管显示出来还不错)不太感兴趣,而对“ id” s

感兴趣

1 个答案:

答案 0 :(得分:0)

不确定所需的输出,但是您可以检查一下每个letter对应多少id

library(dplyr)

df %>%
  group_by(id) %>%
  summarise(n_letters = n_distinct(letter))

A tibble: 6 x 2
     id n_letters
  <dbl>     <int>
1     1         1
2     2         1
3     3         2
4     4         1
5     5         1
6     6         2

如果您只想要id的向量,且只有一个字母:

df %>%
  group_by(id) %>%
  summarise(n_letters = n_distinct(letter)) %>%
  filter(n_letters == 1) %>%
  pull(id)

[1] 1 2 4 5

或者如果您想要{f {1}}的df且包含超过1个字母:

id