首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据数据帧列中的字符串将数据帧分解为单独的数据帧?

如何根据数据帧列中的字符串将数据帧分解为单独的数据帧?
EN

Stack Overflow用户
提问于 2016-05-07 08:13:54
回答 1查看 55关注 0票数 0

我有一个组合零件清单数据框架,有零件清单信息的机械供应和电气供应。我想将机械用品和电气供应分离成它们自己的数据帧,基于PL.Combined列中的某些描述符。

例如,我有:

代码语言:javascript
复制
PL.Combined

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

我想从电气零件{线,电路,接触}中提取机械零件{NUT,螺栓,支架}。

拥有这样的东西:

代码语言:javascript
复制
>PL.Electrical

PART.NUMBER     DESCRIPTION 
    2x              WIRE
    4x              CIRCUIT
    6X              CONTACT

>PL.Mechanical

PART.NUMBER     DESCRIPTION
    1x              NUT 
    3x              BOLT
    5x              BRACKET

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-07 08:42:13

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

代码语言:javascript
复制
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遵循相同的逻辑:

代码语言:javascript
复制
Mech_inventory<-inventory[which(inventory$New_desc%in% Mech),]
Elec_inventory<-inventory[which(inventory$New_desc%in% Elec),]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37086179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档