对不起绝对的初学者,所以有一些非常基本的问题!
我有一个非常大的数据集,列出了一个家庭的个人交易。示例如下。
# hh_id trans_type transaction_value
# 1 hh1 food 4
# 2 hh1 water 5
# 3 hh1 transport 4
# 4 hh2 water 3
# 5 hh3 transport 1
# 6 hh3 food 10
# 7 hh4 food 5
# 8 hh4 transport 15
# 9 hh4 water 10
我想创建一个新的数据框,其中列出的所有交易仅适用于在" water"类别。 (例如,我想要一个没有hh3的df,因为他们没有花费任何费用" water")
作为第一步,我有一个数据框,其中一列(hh_ids)只有我想要的家庭ID。然后,我如何将我的较大数据框子集化,以删除非来自家庭中的所有交易行,这些交易在" water"类别?
数据
## data from @gung
d <- read.table(text="hh_id trans_type transaction_value
hh1 food 4
hh1 water 5
hh1 transport 4
hh2 water 3
hh3 transport 1
hh3 food 10
hh4 food 5
hh4 transport 15
hh4 water 10", header=T)
答案 0 :(得分:4)
d <- read.table(text="hh_id trans_type transaction_value
hh1 food 4
hh1 water 5
hh1 transport 4
hh2 water 3
hh3 transport 1
hh3 food 10
hh4 food 5
hh4 transport 15
hh4 water 10", header=T)
dw <- as.character(with(d, hh_id[trans_type=="water"]))
ds <- d[which(d$hh_id%in%dw),]
ds
# hh_id trans_type transaction_value
# 1 hh1 food 4
# 2 hh1 water 5
# 3 hh1 transport 4
# 4 hh2 water 3
# 7 hh4 food 5
# 8 hh4 transport 15
# 9 hh4 water 10