四个特定行的子集小标题

时间:2019-12-03 06:14:46

标签: r select subset

我有一个名为Alabama的小标题,有31行,我想要一个仅由第1、11、21、31行组成的新小标题。这些行位于名为Year的列中,值分别为1970、1980、1990 ,2000

我尝试过

al_decades <- filter(Alabama, Year==1970 && Year==1980 && Year==1990 && Year==2000)

al_decades <- subset(Alabama, Year==1970 && Year==1980 && Year==1990 && Year==2000)

但没有一个起作用。

1 个答案:

答案 0 :(得分:1)

我们需要%in%而不是==

library(dplyr)
new <- filter(Alabama, Year %in% c(1970, 1980, 1990, 2000))

或者使用&来检查多个元素,而不是&&(不是|),因为“ Year”在同一行中不会有不同的年份

new <- filter(Alabama, (Year == 1970)|(Year == 1980)|(Year == 1990)|(Year == 2000))

或者,如果我们只对这几十年感兴趣,那么另一种选择是

new <- filter(Alabama, Year %%10 == 0)

如果我们知道职位,则另一个选择是slice

new <- Alabama %>%
          slice(c(1, 11, 21, 31))

或将filterrow_number()一起使用

new <- Alabama %>%
           filter(row_number() %in% c(1, 11, 21, 31))

或使用data.table

library(data.table)
setDT(Alabama, key = 'Year')[J(c(1970, 1980, 1990, 2000))]

base R中,我们可以使用subset

subset(Alabama, Year %in% c(1970, 1980, 1990, 2000))