R语言计算各主题唯一实例占编码总数的占比问题
解决方案:计算唯一实例占比并筛选主题
1. 计算唯一实例占比(similarity列)
你之前的代码错误在于用group_by(topic)后调用lag(numCoded)——每个主题本身就是单独一行,lag找不到前序数据才会出现NA,而且这个逻辑和你需要的「唯一实例占编码总数的比例」完全不相关。
直接通过mutate计算numUnique与numCoded的比值即可,转成百分比的话乘以100:
library(tidyverse) # 计算similarity列(百分比格式) propAgree <- propAgree %>% mutate(similarity = (numUnique / numCoded) * 100) # 若需要小数格式(0-1之间),去掉*100即可 # propAgree <- propAgree %>% mutate(similarity = numUnique / numCoded)
用你给出的示例数据,计算后结果如下:
| topic | numCoded | numUnique | similarity |
|---|---|---|---|
| A | 63 | 52 | ~82.54 |
| B | 134 | 91 | ~67.91 |
| C | 19 | 16 | ~84.21 |
| D | 35 | 35 | 100.00 |
2. 筛选占比最高/最低的10个主题
使用slice_max和slice_min可以快速筛选指定数量的极值行,也可以合并结果方便查看:
# 筛选占比最高的10个主题 top_10 <- propAgree %>% slice_max(order_by = similarity, n = 10) # 筛选占比最低的10个主题 bottom_10 <- propAgree %>% slice_min(order_by = similarity, n = 10) # 合并最高/最低结果(可选) combined_result <- bind_rows( top_10 %>% mutate(group = "最高占比Top10"), bottom_10 %>% mutate(group = "最低占比Top10") )
内容的提问来源于stack exchange,提问作者bvecc
相关产品推荐
相关产品推荐

