Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在excel或R中生成带有首字母和生日的唯一ID代码_R_Excel - Fatal编程技术网

在excel或R中生成带有首字母和生日的唯一ID代码

在excel或R中生成带有首字母和生日的唯一ID代码,r,excel,R,Excel,我对编程一无所知。我需要根据孩子们的姓名首字母生日和老师号码生成一个ID。我不知道这是否可以在excel中轻松完成,或者我应该使用R作为例子。我在excel中有这样的列 Grade Teacher Students Initials Birthday 我需要生成ID,以4开头,然后是年级,然后老师指定了一个2位数的数字,孩子们的姓名首字母替换数字1/26,每个字母A-Z,例如RD将是1804生日月日 所以 六年级05老师姓名首字母缩写RD生日06年6月将是460518040606

我对编程一无所知。我需要根据孩子们的姓名首字母生日和老师号码生成一个ID。我不知道这是否可以在excel中轻松完成,或者我应该使用R作为例子。我在excel中有这样的列

 Grade     Teacher  Students Initials  Birthday
我需要生成ID,以4开头,然后是年级,然后老师指定了一个2位数的数字,孩子们的姓名首字母替换数字1/26,每个字母A-Z,例如RD将是1804生日月日

所以 六年级05老师姓名首字母缩写RD生日06年6月将是460518040606

我有大约2000个孩子,所以我希望能得到一些帮助


谢谢

不确定此练习是否会生成唯一的ID。以下是一种基于所述条件生成ID的方法

Init <-  sapply(strsplit(dat$Initials,""),
             function(x) {l1 <- match(x,LETTERS)
              sprintf('%02d%02d', l1[1], l1[2])})
或者是一种变异

 Init <- do.call(`sprintf`, c('%02d%02d', lapply(1:2, function(x) 
                      match(substr(dat$Initials, x,x), LETTERS))))
数据
您可以在Excel中很容易地做到这一点。假设A2包含年级,B2包含两位教师代码,C2包含学生姓名首字母,D2包含生日作为日期。那么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")
解释

TEXTfunction用于格式化字符串,字符串格式化程序00表示以2位数字打印,并在需要时添加0。 CODE函数计算给定字符的ascii码。A编码为65,这就是为什么你必须减去64。 LEFT和RIGHT分别从字符串的左侧和右侧返回给定数量的字符。 DAY and MONTH返回给定日期的日期和月份。
希望这能有所帮助。

请显示数据集的几行。仅显示这些值可能无法保证ID是唯一的。在R中这是一项非常简单的任务。如果只显示数据集的几行,您将比您想象的更快收到答案。另一方面,如果您的数据在Excel中,则可能需要安装其他R库,例如gdata或将文件转换为.csv格式。如果ID长度不是问题,则可能需要将1到2000附加到2000。e、 g.稍微调整@akrun的方法,使用DAT、paste04、Grade、Teacher、Init、Bday、sprintf%04d、1:2000获得唯一ID。
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)
="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")