【发布时间】:2021-09-10 17:11:42
【问题描述】:
样本数据:
set.seed(4)
cl <- sample(LETTERS[1:2], 100, replace = T)
seller <- round(runif(100, min=1, max=80))
df <- data.frame(cl, seller)
cl seller
1 B 21
2 A 51
3 A 22
4 A 43
5 A 38
6 B 46
7 A 54
8 B 18
9 A 78
.......
99 A 32
100 B 8
我想检查 seller 的一个唯一值出现的次数 A 和 B。假设在具有此特定种子的数据框中,您会看到 A 和 B 都出现了 7,因此将计算 7。
我的尝试:
df %>%
filter(cl=='A')-> d1
df %>%
filter(cl=='B')-> d2
d3 <- merge(d1, d2, by='seller') %>%
distinct(seller)
nrow(d3)
17
所以,17 个卖家同时拥有 cl:A 和 B。
到目前为止,我的尝试非常不理想。它会产生结果,但必须有更好的方法来使用dplyr,甚至使用我无法弄清楚的基本R。此外,如果我这样做,对于更大的数据集将非常耗时。
我怎样才能以更好、更整洁的方式解决这个问题?
【问题讨论】:
标签: r dplyr data-wrangling