如何让R在一个列中标识文本,然后用它在另一列中创建数据?

我有一些供应商的材料清单,希望将其说明扩展到其他列,以便我可以使用过滤器功能Excel来根据其说明更轻松地找到产品。他是我从供应商处收到的说明的一个示例:

2 SS 150LB 304L SLIP ON flaNGE

我想采用此描述,并让R标识文本的某些位,然后根据该文本将数据添加到另一列。例如:如果字符串“ SS”在此单元格中,则在“材料”列中输入单词“ STAINLESS”。如果在此单元格中找到字符串“ BLK”,则在“材料”列中输入单词“ BLACK”。如果在此单元格中找到了字符串“ flaNGE”,则将单词“ flaNGE”放在另一个名为Part_Type的列中。

jscj5678 回答:如何让R在一个列中标识文本,然后用它在另一列中创建数据?

这是一种简单的方法,该方法查找某些字符序列以用作触发条件,以将字符串添加到其他列。

library(tidyverse)

df <- tibble(x = c(('2 SS 150LB 304L SLIP ON FLANGE'),('3 BLK ON FLANGE')))


# add new columns filled with NA
df <- df %>% 
  add_column(Materials = NA_character_) %>% 
  add_column(Part_Type = NA_character_)

df %>% 
  mutate(Materials = if_else(str_detect(x,'SS'),'STAINLESS',Materials)) %>% 
  mutate(Materials = if_else(str_detect(x,'BLK'),'BLACK',Materials)) %>% 
  mutate(Part_type = if_else(str_detect(x,'FLANGE'),'FLANGE',Part_Type))

一个物品既可以是“不锈钢”又可以是“黑色”吗?即我们是否要将多个字符串添加到一列?在这种情况下,有必要添加而不是覆盖。这是解决该问题的一种方法。

my_nrow = 2

df <- tibble(x = c(('2 SS 150LB 304L SLIP ON FLANGE'),('3 BLK SS ON FLANGE')),Materials = vector('character',my_nrow),Part_type = vector('character',my_nrow))

df

df %>% 
  mutate(Materials = ifelse(str_detect(x,str_c(Materials,'STAINLESS '),'BLACK '),str_c(Part_type,sep = ' '),Part_type))
本文链接:https://www.f2er.com/3163627.html

大家都在问