用excel或R生成姓名和生日的唯一ID码
我对编程一无所知。 我需要从孩子的姓名缩写生日和教师编号中生成一个ID
。 我不知道是否可以很容易地在Excel中完成,或者我应该使用R例如。 我所拥有的是在Excel中这样的列
Grade Teacher Students Initials Birthday
我需要生成的ID
从#4
开始,然后是grade
然后老师有一个分配的2
位数字孩子的名字首字母replace每个字母AZ
1/26
(例如,RD将是1804
)生日月日
所以6
年级的老师#05
老师RD
生日June 06
将是460518040606
我有大约2 000
孩子,所以我会感谢一些帮助
谢谢
不确定这个练习是否会生成一个唯一的ID。 以下是根据所提到的条件生成ID的一种方法
Init <- sapply(strsplit(dat$Initials,""), function(x) {l1 <- match(x,LETTERS) sprintf('%02d%02d', l1[1], l1[2])})
或者上面的步骤可以用substr
完成
Init <- sprintf('%02d%02d', match(substr(dat$Initials,1,1), LETTERS), match(substr(dat$Initials, 2,2), LETTERS))
或者是一个变化
Init <- do.call(`sprintf`, c('%02d%02d', lapply(1:2, function(x) match(substr(dat$Initials, x,x), LETTERS))))
或者从qdap
使用qdap
library(qdap) Init <- mgsub(LETTERS, sprintf('%02d',1:26), dat$Initials) Bday <- format(as.Date(paste(dat$Birthday, 2004), '%B %d %Y'), '%m%d') paste0(4, dat$Grade, dat$Teacher, Init, Bday) #[1] "460518190606" "440701040720" "470801190518" "450118040825"
数据
dat <- data.frame(Grade=c(6,4,7,5), Teacher=c('05', '07', '08', '01'), Students=c(3,5,7,8), Initials=c('RS','AD', 'AS', 'RD'), Birthday=c('June 06', 'July 20', 'May 18', 'August 25'), stringsAsFactors=FALSE)
你可以很容易地在Excel中做到这一点。 假设A2
包含年级, B2
二位教师代码, C2
学生姓名缩写和D2
生日date。 然后在E2
的下面的公式将做(请检查您的系统是否使用分号;
或简单的逗号,
对于Excel公式,我的确使用分号):
="4" & A2 & B2 & TEXT(CODE(LEFT(C2;1))-64;"00") & TEXT(CODE(RIGHT(C2;1))-64;"00") & TEXT(MONTH(D2);"00")&TEXT(DAY(D2);"00")
说明
-
TEXT
函数用于格式化string,string格式化程序"00"
表示以2位数字打印,如果需要则添加0's
。 -
CODE
函数计算给定字符的ascii码。 代码为65
,这就是为什么你必须减去64
。 -
LEFT
和RIGHT
分别从string的左侧和右侧返回给定数量的字符。 -
DAY
和MONTH
返回给定date的date和月份。
希望有所帮助。