假设数据框df如下:

df <- data.frame(品种来源 = c('父本来源:A;母本来源:B', '母本来源:C,父本来源:D', '父本 C, 母本 D', '母本 D, 父本 C'))

我们可以使用正则表达式来提取父本来源的内容:

df$父本来源 <- gsub('.*父本来源[::]?\s*([[:alnum:]]+).*', '\1', df$品种来源)

解释一下这个正则表达式:

  • .* 匹配任意字符(不包括换行符)0次或多次。
  • 父本来源 匹配'父本来源'这个字符串。
  • [::]? 匹配0个或1个冒号或者中文冒号。
  • \s* 匹配0个或多个空格。
  • ([[:alnum:]]+) 匹配1个或多个字母或数字,并将其捕获。
  • .* 匹配任意字符(不包括换行符)0次或多次。

我们使用gsub()函数将匹配到的内容替换为捕获的内容,即父本来源。最后将结果存储到新列父本来源中。

执行完上述代码后,数据框df将变为:

            品种来源 父本来源
1 父本来源:A;母本来源:B      A
2 母本来源:C,父本来源:D      D
3        父本 C, 母本 D      C
4        母本 D, 父本 C      C

原文地址: https://www.cveoy.top/t/topic/nni1 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录