我在R中有一个data.frame,其中一列包含{some letters}形式的字符串 - {a number} {a letter},例如x <- 'KFKGDLDSKFDSKJJFDI-4567W'
。因此,我希望例如为该特定示例/行获取具有数字的列,例如'4567'。只有一个数字,但它可以是任何合理的长度。如何从data.frame中的每一行中提取数字?
答案 0 :(得分:1)
使用regular expressions提取子字符串。使用as.numeric
将生成的字符串转换为数字:
string = 'KFKGDLDSKFDSKJJFDI-4567W'
as.numeric(regmatches(string, regexpr('\\d+', string)))
# 4567
您可以轻松地使用它在数据框中创建新列:
#data = data.frame(x = rep(string, 10))
transform(data, y = as.numeric(regmatches(x, regexpr('\\d+', x))))
# x y
# 1 KFKGDLDSKFDSKJJFDI-4567W 4567
# 2 KFKGDLDSKFDSKJJFDI-4567W 4567
# 3 KFKGDLDSKFDSKJJFDI-4567W 4567
# 4 KFKGDLDSKFDSKJJFDI-4567W 4567
…
答案 1 :(得分:0)
试试这个:
gsub("[a-zA-Z]+-([0-9]+)[a-zA-Z]","\\1", "KFKGDLDSKFDSKJJFDI-4567W")