如果其他列值等于列表中的任何值,则为Sum列

时间:2013-05-20 03:23:32

标签: r

我正在使用包含三列的Census实时工作数据:homeblock,工作块和通勤的人数(S00)。如果我想知道谁在某个地方生活和工作,我只需要做:

sum(data$S00[(data$homeblock == 42101) & (data$workblock == 42101)])

问题是我需要为多个块执行此操作。我知道如何为给定数量的块做到这一点。这就是我为两个街区做的事情:

sum(data$S00[((data$homeblock == 42101000100) | (data$homeblock == 42101000200)) &
    ((data$workblock == 42101000100) | (data$workblock == 42101000200))]
)

我有很多不同长度的载体,这些载体都有人口普查区数字,我希望无论长度如何都可以。我希望它能像这样工作,但它没有:

sum(data$S00[(data$homeblock == c(42101000100,42101000200,42101000300) &
     (data$workblock == c(42101000100,42101000200,42101000300))]
)

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:3)

您想要%in%

sum(data$S00[(data$homeblock %in% c(42101000100,42101000200,42101000300) & 
     (data$workblock %in% c(42101000100,42101000200,42101000300))])