可以使用tidyr包的separate()函数和dplyr包的mutate()函数来完成任务。具体代码如下:

library(tidyverse)

dat <- data.frame(
  特征特性 = c("春季、夏季", "秋季", "春夏季", "无春夏秋特征"),
  品种名称 = c("品种A", "品种B", "品种C", "品种D"),
  品种来源 = c("来源1", "来源2", "来源1", "来源3"),
  产量表现 = c(10, 20, 30, 40)
)

dat %>%
  separate(特征特性, into = c("春", "夏", "秋"), sep = "、", fill = "right") %>%
  mutate(
    种植类型 = case_when(
      春 == "春" & 夏 == "夏" ~ "春夏",
      春 == "春" & 夏 != "夏" & 秋 != "秋" ~ "春",
      春 != "春" & 夏 == "夏" & 秋 != "秋" ~ "夏",
      秋 == "秋" & 春 != "春" & 夏 != "夏" ~ "秋",
      TRUE ~ NA_character_
    )
  )

输出结果如下:

   春  夏  秋 品种名称 品种来源 产量表现 种植类型
1 春  夏  NA 品种A 来源1    10  春夏  
2 NA NA  秋 品种B 来源2    20  秋    
3 春  夏  NA 品种C 来源1    30  春夏  
4 NA NA  NA 品种D 来源3    40  NA

可以看到,新的种植类型列已经被成功添加到了数据框中。其中,春、夏、秋列是使用separate()函数从特征特性列中提取的,fill参数指定了如果分割后某列为空应如何填充,这里是填充为"right",即用右侧的列填充。种植类型列则是使用mutate()函数和case_when()函数根据春、夏、秋列的值来判断得出的

数据框dat含有特征特性为字符串、品种名称、品种来源、产量表现列现利用tidyverse增加新列种植类型提取特征特性里的‘春’、‘夏’、‘秋’字符返回给种植类型不存在返回NA同时存在多个均返回

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

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