创建具有特定年份的数据框的子集
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
我正在使用 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