r - 如何按组拆分数据框?

标签 r dataframe subset

我有以下名为groceries的数据框:

Region    Item    Barcode    Version
East     Cereal    BM        2.1
North    Bagel     EP        2.0
East     Pizza     BM        2.3
West     Taco      EP        2.2
West     Apple     BM        3.0
South    Orange    EP        3.2
North    Tomato    EP        2.2
South    Grape     EP        2.0
East     Pineapple EP        3.2
North    Cake      BM        2.0

如何按条形码版本对数据帧进行子集化以获得以下数据帧?

数据框

Region    Item    Barcode    Version
East     Cereal    BM        2.1
East     Pizza     BM        2.3
North    Cake      BM        2.0

数据框

Region    Item    Barcode    Version
West     Apple     BM        3.0

数据框

Region    Item    Barcode    Version
North    Bagel     EP        2.0
North    Tomato    EP        2.2
South    Grape     EP        2.0
West     Taco      EP        2.2

数据框

Region    Item    Barcode    Version
South    Orange    EP        3.2
East     Pineapple EP        3.2

如您所见,我尝试按条形码和版本对原始数据帧进行子集化(作为整数;因此 2.0、2.1、2.3 都被视为 2 等)。

这是我到目前为止所拥有的:

subset(groceries, Barcode=="BM" & Version==2.0 | Version==2.1 | Version==2.3)

正如你所想象的那样,这并不理想。有没有一种方法可以获取 BarcodeVersion 不同因素的向量(作为整数)?如果我可以将这两个作为向量,那么我可能可以创建一个 for 循环,自动执行上面的行来创建这 4 个数据帧。

最佳答案

split(df, interaction(df$Barcode, floor(df$Version)))
# $BM.2
# Region   Item Barcode Version
# 1    East Cereal      BM     2.1
# 3    East  Pizza      BM     2.3
# 10  North   Cake      BM     2.0
# 
# $EP.2
# Region   Item Barcode Version
# 2  North  Bagel      EP     2.0
# 4   West   Taco      EP     2.2
# 7  North Tomato      EP     2.2
# 8  South  Grape      EP     2.0
# 
# $BM.3
# Region  Item Barcode Version
# 5   West Apple      BM       3
# 
# $EP.3
# Region      Item Barcode Version
# 6  South    Orange      EP     3.2
# 9   East Pineapple      EP     3.2

关于r - 如何按组拆分数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35822515/

相关文章:

Python Pandas : How To Set Columns as an Index?

r - 通过 ddply 中指定的变量在函数内子集

r - 在 theme_minimal() 中找到中心标题和副标题

r - 过滤数据表时链接 ANDing 的性能优势

python - 使用 pandas dataframe 加速迭代过程

r - 通过现有对象对数据框进行子集化

java - 比较两个 ArrayLists - 一个作为另一个的子集

使用 ggplot2 重新创建圆形图

r - 如果该行包含任何 "TRUE",则保留该行

python - 在 Pandas DataFrame 中首先包含字符串的顺序列