如何根据数据帧列中的字符串将数据帧转换为单独的数据帧

  • 本文关键字:数据帧 转换 字符串 单独 何根 r
  • 更新时间 :
  • 英文 :


我有一个组合零件列表数据框架,其中包含机械用品和电气用品的零件列表信息。我想根据PL.组合列中的某些描述符,将机械供应和电气供应分离为各自的数据帧。

例如,我有:

PL.Combined
PART.NUMBER     DESCRIPTION
    1x              NUT 
    2x              WIRE
    3x              BOLT
    4x              CIRCUIT
    5x              BRACKET
    6X              CONTACT

我想从电气零件{电线、电路、触点}中提取机械零件{螺母、螺栓、支架}。

有这样的东西:

>PL.Electrical
PART.NUMBER     DESCRIPTION 
    2x              WIRE
    4x              CIRCUIT
    6X              CONTACT
>PL.Mechanical
PART.NUMBER     DESCRIPTION
    1x              NUT 
    3x              BOLT
    5x              BRACKET

关于如何做到这一点,有什么建议吗?

如果您有一个指定的库存列表,您可以使用它将数据拆分为2个data.frames。处理这个问题的一个好方法可以如下:

inventory<-read.csv("stackoverflow.csv",stringsAsFactors = F)
inventory
  PART.NUMBER           DESCRIPTION
1          1x          1/2 inch NUT
2          2x              2mm WIRE
3          3x            screw BOLT
4          4x closed & open CIRCUIT
5          5x         joint BRACKET
6          6X      adhesive CONTACT
inventory$New_desc<-do.call(rbind,lapply(strsplit(inventory[,2],split=" "), function(x) tail(x,1)))
inventory
  PART.NUMBER           DESCRIPTION New_desc
1          1x          1/2 inch NUT      NUT
2          2x              2mm WIRE     WIRE
3          3x            screw BOLT     BOLT
4          4x closed & open CIRCUIT  CIRCUIT
5          5x         joint BRACKET  BRACKET
6          6X      adhesive CONTACT  CONTACT
Mech<-c("NUT", "BOLT", "BRACKET")
Elec<-c("WIRE", "CIRCUIT", "CONTACT")
Split_inventory<-list()
Split_inventory[['Mech']]<-inventory[which(inventory$New_desc %in% Mech),]
Split_inventory[['Elec']]<-inventory[which(inventory$New_desc %in% Elec),]

如果你不太熟悉lists,那么将它们划分为data.frames遵循相同的逻辑:

Mech_inventory<-inventory[which(inventory$New_desc%in% Mech),]
Elec_inventory<-inventory[which(inventory$New_desc%in% Elec),]

最新更新