数据框dat含有特征特性为字符串、品种名称、品种来源、产量表现列现利用tidyverse增加新列种植类型提取特征特性里的‘春’、‘夏’、‘秋’字符返回给种植类型不存在返回NA同时存在多个均返回
可以使用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()函数根据春、夏、秋列的值来判断得出的
原文地址: http://www.cveoy.top/t/topic/dWi2 著作权归作者所有。请勿转载和采集!