【发布时间】:2021-12-06 20:33:46
【问题描述】:
我有以下数据集,其中列集群是初始集群,而 lt_clust 是一段时间后的结果集群:
dataset <- data.frame(Id = c(101, 102, 103, 104, 105, 106, 107, 108,
109, 110, 111, 112, 113, 114),
clust = c("k1", "k1", "k1", "k1","k1", "k2", "k2",
"k2", "k2", "k2", "k3", "k3", "k3", "k3"),
lt_clust = c("k2", "k1", "k1", "k1", "k1", "k2", "k3",
"k1", "k2", "k2", "k3", "k3", "k1", "k3"),
stringsAsFactors = FALSE)
现在我想测试我在分配最终集群时的准确程度,所以预期的结果是:
clust lt_clust rate
<fct> <fct> <dbl>
1 k1 k1 0.8
2 k1 k2 0.2
3 k1 k3 0
4 k2 k1 0.2
5 k2 k2 0.6
6 k2 k3 0.2
7 k3 k1 0.25
8 k3 k2 0
9 k3 k3 0.75
这是我的第一次尝试:
dataset %>%
mutate(clust = as.factor(clust),
lt_clust = as.factor(lt_clust),
tick = 1) %>%
group_by(clust, lt_clust, .drop = FALSE) %>%
summarise(total = sum(tick)) %>%
ungroup() %>%
group_by(clust, ) %>%
summarise(rate = total / sum(total))
但我未能捕获 lt_clust 列:
clust rate
<fct> <dbl>
1 k1 0.8
2 k1 0.2
3 k1 0
4 k2 0.2
5 k2 0.6
6 k2 0.2
7 k3 0.25
8 k3 0
9 k3 0.75
当我尝试这个时,结果也是错误的:
dataset %>%
mutate(clust = as.factor(clust),
lt_clust = as.factor(lt_clust),
tick = 1) %>%
group_by(clust, lt_clust, .drop = FALSE) %>%
summarise(total = sum(tick),
rate = total / sum(total))
clust lt_clust total rate
<fct> <fct> <dbl> <dbl>
1 k1 k1 4 1
2 k1 k2 1 1
3 k1 k3 0 NaN
4 k2 k1 1 1
5 k2 k2 3 1
6 k2 k3 1 1
7 k3 k1 1 1
8 k3 k2 0 NaN
9 k3 k3 3 1
拜托,你能帮我找出我在代码中做错了什么吗?我尝试使用 dplyr 包来实现。
【问题讨论】: