有时候我们需要按照汉字的笔画数进行排序,这时候就可以使用tmcn包的GBK数据集,我们要用到的是第一列 (GBK) 和第六列 (Stroke_Order),Stroke_Order是笔画顺序,自然包含了总的笔画数的信息。。
if(!requireNamespace("tmcn")) install.packages("tmcn") # 如果没有这个包则安装一下
data(GBK, package = "tmcn") # 加载GBK数据集 head(GBK) # 可以看到,分为8列 BiHuaShu <- nchar(GBK$Stroke_Order) # 或许每个字对应的笔画数 names(BiHuaShu) <- GBK$GBK # 向量每个元素对应名称,也就是汉字 head(BiHuaShu) # 看看得到的向量是怎么样的 # 接下来我们对一个数据按照姓名第一个字的笔画数来排序,先读入示例数据: CJ <- read.delim("ftp://ftp.biolab.wang/data/期考成绩.tsv", fileEncoding="GBK") head(CJ) # 看看总的分为6列 CJ <- CJ[order(BiHuaShu[substr(CJ$姓名, 1, 1)]), ] # substr 用于提取第一个字, # 通过BiHuaShu的元素名取子集得到对应的笔画数 # 然后再使用order排序 head(CJ) # 可以看到,已经按顺序排好了