如何在R中按分类变量实现行间数值相减以修正动词计数
R数据处理方案:按文件名分组修正时态体动词计数
核心逻辑
- 以
filename为分组依据,确保每个文本的时态体数据独立计算 - 针对
past_simple类别,用其原始计数减去同文本内past_perfect和past_progressive的计数之和,其他类别保持原数值,完全不受行序影响
代码实现(基于dplyr)
假设你的tibble数据名为ta_data,包含filename(文件名)、TA(时态体类别)、n(动词计数)三列:
直接修正原计数列
library(dplyr) # 分组修正计数 ta_data_fixed <- ta_data %>% group_by(filename) %>% mutate( n = case_when( TA == "past_simple" ~ n - sum(n[TA %in% c("past_perfect", "past_progressive")], na.rm = TRUE), TRUE ~ n # 其他时态体保留原数值 ) ) %>% ungroup()
保留原计数,生成修正后新列
如果不想覆盖原始n列,可以新增n_fixed列存储修正后的值:
ta_data_fixed <- ta_data %>% group_by(filename) %>% mutate( n_fixed = case_when( TA == "past_simple" ~ n - sum(n[TA %in% c("past_perfect", "past_progressive")], na.rm = TRUE), TRUE ~ n ) ) %>% ungroup()
关键细节说明
group_by(filename):将数据按文件名拆分,每个文件的计算互不干扰sum(..., na.rm = TRUE):如果某文件缺少past_perfect或past_progressive类别,na.rm = TRUE会自动忽略缺失值,避免计算出错case_when():精准匹配需要修正的时态体类别,其他类别保持原样,逻辑清晰易维护
结果验证
可以筛选单个文件查看修正效果:
# 替换为你要检查的文件名 filter(ta_data_fixed, filename == "sample_text.txt")
内容的提问来源于stack exchange,提问作者LilyLew
相关产品推荐
相关产品推荐

