我有以下名为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个数据帧。
答案 0 :(得分:2)
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