创建具有特定年份的数据框的子集

Creating a subset of a data frame with specific years

我正在使用 WDI 的数据框并尝试清理合并的数据集。

两个合并数据集中的一个只有 2000、2005、2010 年的值,因此我想要一个仅包含这些年份(对于每个国家等)的子集数据框。

我的代码如下:

WB_Merge1 = subset(WB_Merge, select = c(year==2000 | year==2005 | year==2010))

然而,当我在 R 中 运行 它创建一个数据框,现在有所有 5502 个观测值但没有变量?

有人能帮忙吗?非常感谢。

尝试:

require(dplyr)
WB_Merge1 <- filter(WB_Merge, year %in% c(2000, 2005, 2010)

您只是使用了错误的参数,select 行您想要 subset=

subset(dat, subset=c(year == 2000 | year == 2005 | year == 2010))

或者更简洁:

subset(dat, subset=year %in% c(2000, 2005, 2010))
#    year          x          z
# 1  2000 -0.4703161 0.62147778
# 6  2005 -0.6667708 0.03479132
# 11 2010 -0.8059292 0.43732005

select= 用于列。

subset(dat, subset=year %in% c(2000, 2005, 2010), select=c(year, z))
#    year          z
# 1  2000 0.62147778
# 6  2005 0.03479132
# 11 2010 0.43732005

请注意,如果您以正确的顺序提供参数,则可以省略参数名称并执行以下操作:

subset(dat, year %in% c(2000, 2005, 2010), c(year, z))

数据:

set.seed(42)
dat <- data.frame(year=2000:2022, x=rnorm(23), z=runif(23))

另一个解决方案which()

示例数据:

set.seed(42)
data <- data.frame(year=2000:2022, x=rnorm(23), z=runif(23))

示例代码:

new.data <- data[ which( data$year == 2000 | data$year == 2005 | data$year == 2010) , ]

输出:

   year          x         z
1  2000  1.3709584 0.8877549
6  2005 -0.1061245 0.3467482
11 2010  1.3048697 0.6772768