从每一行提取一个字母并在R中创建一个新列的最佳方法?

从每一行提取一个字母并在R中创建一个新列的最佳方法?,r,database,R,Database,下面是我正在处理的数据摘录。我很难找到从sbp.id列中提取最后一个字母的方法,并且无法使用结果向下面的数据框中添加一个名为“sex”的新列。我最初试图用grepl将以F结尾的行和以M结尾的行分开,但不知道如何使用它创建一个只有M或F的新列,这取决于sbp.id列中每行的最后一个字母 sbp.id newID 125F 125 13000M 13000 13120M 13120 13260M 13260 13480M 13480 使用regex可以从sbp.id df$sex <

下面是我正在处理的数据摘录。我很难找到从sbp.id列中提取最后一个字母的方法,并且无法使用结果向下面的数据框中添加一个名为“sex”的新列。我最初试图用grepl将以F结尾的行和以M结尾的行分开,但不知道如何使用它创建一个只有M或F的新列,这取决于sbp.id列中每行的最后一个字母

sbp.id newID 
125F   125 
13000M 13000
13120M 13120
13260M 13260
13480M 13480

使用regex可以从
sbp.id

df$sex <- sub('.*([A-Z])$', '\\1', df$sbp.id)
#Also
#df$sex <- sub('.*([MF])$', '\\1', df$sbp.id)

df$sex另一种方法是,如果您知道需要最后一个字母,不管其他字符是数字、数字还是元素的长度都不同,但您仍然需要每行字符串中的最后一个字符:

df$sex <- substr(df$sbp.id, nchar(df$sbp.id), nchar(df$sbp.id))
df$sex
df$sex <- substr(df$sbp.id, nchar(df$sbp.id), nchar(df$sbp.id))