R 分组将一个变量分成多个变量
为了在我的felm固定效应估计中包括特定于州的年度趋势,我想为每个州创建一个单独的变量,第一年的值为1,第二年的值为2,依此类推,所有其他州的值为0。 我设法创建了一个变量(“示例中的stateyear”)来满足所有这些要求,但它只是所有州的一个变量(参见示例)。是否有办法将该变量按组(state_geocode_id)拆分为多个变量,并将除各自国家外的所有其他国家的每个变量设置为0 简化数据集:R 分组将一个变量分成多个变量,r,R,为了在我的felm固定效应估计中包括特定于州的年度趋势,我想为每个州创建一个单独的变量,第一年的值为1,第二年的值为2,依此类推,所有其他州的值为0。 我设法创建了一个变量(“示例中的stateyear”)来满足所有这些要求,但它只是所有州的一个变量(参见示例)。是否有办法将该变量按组(state_geocode_id)拆分为多个变量,并将除各自国家外的所有其他国家的每个变量设置为0 简化数据集: d <- data.frame("100") names(d) <- "state_g
d <- data.frame("100")
names(d) <- "state_geocode_id"
d$state_geocode_id <- as.character(d$state_geocode_id)
d <- rbind(d, "100", "100", "100", "101", "101", "101", "101", "102", "102", "102", "102")
d$municip <- c("1", "1", "2", "2", "3", "3", "4", "4", "5", "5", "6", "6")
d$year <- c("2000", "2001", "2000", "2001","2000", "2001", "2000", "2001", "2000", "2001", "2000", "2001")
d像这样
library(tidyverse)
d %>%
group_by(state_geocode_id) %>%
#add a row counter and duplicate the state id
mutate(row = row_number(),
state2 = state_geocode_id) %>%
#now spread by the duplicate state to get a column for each state
spread(key = state2, value = row, fill = 0)
# A tibble: 12 x 6
# Groups: state_geocode_id [4]
state_geocode_id year `100` `101` `102` `103`
<chr> <chr> <dbl> <dbl> <dbl> <dbl>
1 100 2000 1 0 0 0
2 100 2001 2 0 0 0
3 100 2002 3 0 0 0
4 101 2000 0 1 0 0
5 101 2001 0 2 0 0
6 101 2002 0 3 0 0
7 102 2000 0 0 1 0
8 102 2001 0 0 2 0
9 102 2002 0 0 3 0
10 103 2000 0 0 0 1
11 103 2001 0 0 0 2
12 103 2002 0 0 0 3
库(tidyverse)
d%>%
分组依据(州地理编码id)%>%
#添加行计数器并复制状态id
变异(行=行编号(),
state2=州\地理代码\ id)%>%
#现在按复制状态展开以获得每个状态的列
排列(键=状态2,值=行,填充=0)
#一个tibble:12x6
#组别:州地理编码[4]
州地理编码id年份'100``101``102``103`
1 100 2000 1 0 0 0
2 100 2001 2 0 0 0
3 100 2002 3 0 0 0
4 101 2000 0 1 0 0
5 101 2001 0 2 0 0
6 101 2002 0 3 0 0
7 102 2000 0 0 1 0
8 102 2001 0 0 2 0
9 102 2002 0 0 3 0
10 103 2000 0 0 0 1
11 103 2001 0 0 0 2
12 103 2002 0 0 0 3
像这样吗
library(tidyverse)
d %>%
group_by(state_geocode_id) %>%
#add a row counter and duplicate the state id
mutate(row = row_number(),
state2 = state_geocode_id) %>%
#now spread by the duplicate state to get a column for each state
spread(key = state2, value = row, fill = 0)
# A tibble: 12 x 6
# Groups: state_geocode_id [4]
state_geocode_id year `100` `101` `102` `103`
<chr> <chr> <dbl> <dbl> <dbl> <dbl>
1 100 2000 1 0 0 0
2 100 2001 2 0 0 0
3 100 2002 3 0 0 0
4 101 2000 0 1 0 0
5 101 2001 0 2 0 0
6 101 2002 0 3 0 0
7 102 2000 0 0 1 0
8 102 2001 0 0 2 0
9 102 2002 0 0 3 0
10 103 2000 0 0 0 1
11 103 2001 0 0 0 2
12 103 2002 0 0 0 3
库(tidyverse)
d%>%
分组依据(州地理编码id)%>%
#添加行计数器并复制状态id
变异(行=行编号(),
state2=州\地理代码\ id)%>%
#现在按复制状态展开以获得每个状态的列
排列(键=状态2,值=行,填充=0)
#一个tibble:12x6
#组别:州地理编码[4]
州地理编码id年份'100``101``102``103`
1 100 2000 1 0 0 0
2 100 2001 2 0 0 0
3 100 2002 3 0 0 0
4 101 2000 0 1 0 0
5 101 2001 0 2 0 0
6 101 2002 0 3 0 0
7 102 2000 0 0 1 0
8 102 2001 0 0 2 0
9 102 2002 0 0 3 0
10 103 2000 0 0 0 1
11 103 2001 0 0 0 2
12 103 2002 0 0 0 3
非常感谢您的快速回复,这正是我想要的。我稍微修改了示例数据集,因为我实际上有一个子州级别(自治市),但根据州地理编码id进行分组,年份使解决方案足够通用,足以说明这一点。非常感谢您的快速响应,这正是我想要的。我稍微修改了示例数据集,因为我实际上有一个子州级别(自治市),但根据州地理编码id进行分组,年份使解决方案具有足够的通用性。