You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用tidyr包的complete函数补全字母序列?

用tidyr::complete补全字母序列的方法

你有如下数据框:

df <- structure(list(x = c(1, 5, 6, 7, 8), y = c("a", "e", "f", "g", 
"h")), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, 
-5L))

数据框预览:

x y    
  <dbl> <chr>
1     1 a    
2     5 e    
3     6 f    
4     7 g    
5     8 h 

使用tidyr::complete对数值型的x列补全序列可以正常运行:

df %>% 
  complete(x = full_seq(min(x):max(x), 1))

运行结果:

x y    
  <dbl> <chr>
1     1 a    
2     2 NA   
3     3 NA   
4     4 NA   
5     5 e    
6     6 f    
7     7 g    
8     8 h

但直接对字符型的y列执行类似操作会报错:

df %>% 
  complete(y = full_seq(min(y):max(y), 1))

解决方案

要补全字母序列,需要先将字符型字母转换为ASCII编码处理,再转回字符,具体操作如下:

  • 用utf8ToInt()获取y列首尾字母的ASCII码值
  • 用seq()生成该区间内的完整整数序列
  • 用intToUtf8()将整数序列重新转换为字母
  • 将转换后的字母序列传入complete()中完成补全

完整代码:

library(tidyr)
library(dplyr)

df %>% 
  complete(y = intToUtf8(seq(utf8ToInt(min(y)), utf8ToInt(max(y)), 1)))

运行结果:

y         x
  <chr> <dbl>
1 a         1
2 b        NA
3 c        NA
4 d        NA
5 e         5
6 f         6
7 g         7
8 h         8

内容的提问来源于stack exchange,提问作者TarJae

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 18:39:40