我有以下名为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)
正如你所想象的那样,这并不理想。有没有一种方法可以获取 Barcode
和 Version
不同因素的向量(作为整数)?如果我可以将这两个作为向量,那么我可能可以创建一个 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/