有一个简单的数据框,列出每几个月的产品类型和标签号:
data.frame(
stringsAsFactors = FALSE,
month = c("jan","jan","jan","jan",
"jan","feb","feb","feb","feb"),
category = c("TB", "GT", "TB", "YT", "GT", "TB", "GT", "TB", "YT"),
tag_number = c(101L, 101L, 223L, 223L, 223L, 345L, 345L, 655L, 223L)
)
month category tag_number
jan TB 101
jan GT 101
jan TB 223
jan YT 223
jan GT 223
feb TB 345
feb GT 345
feb TB 655
feb YT 223
我想按月份和类别比较和提取唯一 tag_number 值之间的百分比差异。
让我再解释一下,因为这似乎是一个复杂的问题。
如果我们得到分组的月份和类别,我们就可以比较这个表(月份+类别)
Jan TB 101, 223 vs. Feb TB 345, 655
Jan GT 101, 223 vs. Feb GT 345
Jan YT 223 vs. Feb YT 223
1 月份,结核病类别有两个唯一的标签编号(101 和 223)。如果您与 February 进行比较,也有两个独特的标签,但它们都不相等,因此月份之间的百分比差异为 100%,并且在这两种情况下不同的计数都是 2。
GT 类别相同。所有标签都不同。所以又是 100%。
不同的情况是 YT。两个月包含相同的标签号,因此差异为 0%
这里是预期的结果。差异百分比是月份之间不同的案例百分比。
让我们以 TB 类别为例。
总共 4 个唯一值,每月 2 个唯一值,没有一个相等:
4/4 = 1(所以 100%)
category pct_diff
TB 100%
GT 100%
YT 0%
最佳答案
df %>%
group_by(category) %>%
summarise(perc_diff = 100 * mean(table(tag_number) == 1))
# A tibble: 3 x 2
category perc_diff
<chr> <dbl>
1 GT 100
2 TB 100
3 YT 0
关于r - 计数不同并计算两列中的百分比差异 ifrom R dataframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70126028/