我有一张这样的桌子:
cod ano MUNICIPIO Programa
1 110001 1998 ALTA FLORESTA D OESTE
2 110001 1999 ALTA FLORESTA D OESTE
3 110001 2000 ALTA FLORESTA D OESTE
4 110001 2001 ALTA FLORESTA D OESTE
5 110001 2002 ALTA FLORESTA D OESTE PMAT
6 110001 2003 ALTA FLORESTA D'OESTE
7 110001 2004 ALTA FLORESTA D OESTE
8 110001 2005 ALTA FLORESTA D OESTE
9 110001 2006 ALTA FLORESTA D OESTE PMAT
10 110001 2007 ALTA FLORESTA D OESTE
11 110001 2008 ALTA FLORESTA D OESTE
12 110001 2009 ALTA FLORESTA D OESTE
13 110001 2010 ALTA FLORESTA D OESTE PMAT
14 110001 2011 ALTA FLORESTA D OESTE
15 110001 2012 ALTA FLORESTA D OESTE
16 110001 2013 ALTA FLORESTA D OESTE
17 110001 2014 ALTA FLORESTA D OESTE
18 110001 2015 ALTA FLORESTA D OESTE
19 110001 2016 ALTA FLORESTA D OESTE
20 110002 1998 ARIQUEMES
21 110002 1999 ARIQUEMES
22 110002 2000 ARIQUEMES
23 110002 2001 ARIQUEMES
24 110002 2002 ARIQUEMES
25 110002 2003 ARIQUEMES
26 110002 2004 ARIQUEMES PMAT
27 110002 2005 ARIQUEMES
28 110002 2006 ARIQUEMES
29 110002 2007 ARIQUEMES
30 110002 2008 ARIQUEMES
31 110002 2009 ARIQUEMES
32 110002 2010 ARIQUEMES
33 110002 2011 ARIQUEMES
34 110002 2012 ARIQUEMES
35 110002 2013 ARIQUEMES
36 110002 2014
37 110002 2015 ARIQUEMES
38 110002 2016 ARIQUEMES
39 110003 1998 CABIXI
40 110003 1999 CABIXI
41 110003 2000 CABIXI
42 110003 2001 CABIXI
43 110003 2002 CABIXI
44 110003 2003 CABIXI
45 110003 2004 CABIXI
46 110003 2005 CABIXI
47 110003 2006 CABIXI
48 110003 2007 CABIXI
49 110003 2008 CABIXI
50 110003 2009 CABIXI
其中变量“ Programa”是“ PMAT”或“”。我要为每个城市创建一个新变量,如虚拟变量(我称为pmat_123),但每次城市具有“ PMAT”时,其变量将在0到3之间变化。像这样:
cod ano MUNICIPIO Programa pmat_123
1 110001 1998 ALTA FLORESTA D OESTE 0
2 110001 1999 ALTA FLORESTA D OESTE 0
3 110001 2000 ALTA FLORESTA D OESTE 0
4 110001 2001 ALTA FLORESTA D OESTE 0
5 110001 2002 ALTA FLORESTA D OESTE PMAT 1
6 110001 2003 ALTA FLORESTA D'OESTE 1
7 110001 2004 ALTA FLORESTA D OESTE 1
8 110001 2005 ALTA FLORESTA D OESTE 1
9 110001 2006 ALTA FLORESTA D OESTE PMAT 2
10 110001 2007 ALTA FLORESTA D OESTE 2
11 110001 2008 ALTA FLORESTA D OESTE 2
12 110001 2009 ALTA FLORESTA D OESTE 2
13 110001 2010 ALTA FLORESTA D OESTE PMAT 3
14 110001 2011 ALTA FLORESTA D OESTE 3
15 110001 2012 ALTA FLORESTA D OESTE 3
16 110001 2013 ALTA FLORESTA D OESTE 3
17 110001 2014 ALTA FLORESTA D OESTE 3
18 110001 2015 ALTA FLORESTA D OESTE 3
19 110001 2016 ALTA FLORESTA D OESTE 3
20 110002 1998 ARIQUEMES 0
21 110002 1999 ARIQUEMES 0
22 110002 2000 ARIQUEMES 0
23 110002 2001 ARIQUEMES 0
24 110002 2002 ARIQUEMES 0
25 110002 2003 ARIQUEMES 0
26 110002 2004 ARIQUEMES PMAT 1
27 110002 2005 ARIQUEMES 1
28 110002 2006 ARIQUEMES 1
29 110002 2007 ARIQUEMES 1
30 110002 2008 ARIQUEMES 1
31 110002 2009 ARIQUEMES 1
32 110002 2010 ARIQUEMES 1
33 110002 2011 ARIQUEMES 1
34 110002 2012 ARIQUEMES 1
35 110002 2013 ARIQUEMES 1
36 110002 2014 1
37 110002 2015 ARIQUEMES 1
38 110002 2016 ARIQUEMES 1
39 110003 1998 CABIXI 0
40 110003 1999 CABIXI 0
41 110003 2000 CABIXI 0
42 110003 2001 CABIXI 0
43 110003 2002 CABIXI 0
44 110003 2003 CABIXI 0
我尝试使用mutate函数和ifelse,但是没有用。 你们可以帮我吗?
答案 0 :(得分:0)
按“ cod”分组后,通过取逻辑表达式的累加和来创建“ pmat_123”
library(dplyr)
df1 %>%
group_by(cod) %>%
mutate(pmat_123 = cumsum(Programa == 'PMAT'))
# A tibble: 34 x 5
# Groups: cod [2]
# cod ano MUNICIPIO Programa pmat_123
# <int> <int> <chr> <chr> <int>
# 1 110001 1998 ALTA FLORESTA D OESTE "" 0
# 2 110001 1999 ALTA FLORESTA D OESTE "" 0
# 3 110001 2000 ALTA FLORESTA D OESTE "" 0
# 4 110001 2001 ALTA FLORESTA D OESTE "" 0
# 5 110001 2002 ALTA FLORESTA D OESTE PMAT 1
# 6 110001 2003 ALTA FLORESTA D OESTE "" 1
# 7 110001 2004 ALTA FLORESTA D OESTE "" 1
# 8 110001 2005 ALTA FLORESTA D OESTE "" 1
# 9 110001 2006 ALTA FLORESTA D OESTE PMAT 2
#10 110001 2007 ALTA FLORESTA D OESTE "" 2
# ... with 24 more rows
df1 <- structure(list(cod = c(110001L, 110001L, 110001L, 110001L, 110001L,
110001L, 110001L, 110001L, 110001L, 110001L, 110001L, 110001L,
110001L, 110001L, 110001L, 110001L, 110001L, 110001L, 110001L,
110002L, 110002L, 110002L, 110002L, 110002L, 110002L, 110002L,
110002L, 110002L, 110002L, 110002L, 110002L, 110002L, 110002L,
110002L), ano = c(1998L, 1999L, 2000L, 2001L, 2002L, 2003L, 2004L,
2005L, 2006L, 2007L, 2008L, 2009L, 2010L, 2011L, 2012L, 2013L,
2014L, 2015L, 2016L, 1998L, 1999L, 2000L, 2001L, 2002L, 2003L,
2004L, 2005L, 2006L, 2007L, 2008L, 2009L, 2010L, 2011L, 2012L
), MUNICIPIO = c("ALTA FLORESTA D OESTE", "ALTA FLORESTA D OESTE",
"ALTA FLORESTA D OESTE", "ALTA FLORESTA D OESTE", "ALTA FLORESTA D OESTE",
"ALTA FLORESTA D OESTE", "ALTA FLORESTA D OESTE", "ALTA FLORESTA D OESTE",
"ALTA FLORESTA D OESTE", "ALTA FLORESTA D OESTE", "ALTA FLORESTA D OESTE",
"ALTA FLORESTA D OESTE", "ALTA FLORESTA D OESTE", "ALTA FLORESTA D OESTE",
"ALTA FLORESTA D OESTE", "ALTA FLORESTA D OESTE", "ALTA FLORESTA D OESTE",
"ALTA FLORESTA D OESTE", "ALTA FLORESTA D OESTE", "ARIQUEMES",
"ARIQUEMES", "ARIQUEMES", "ARIQUEMES", "ARIQUEMES", "ARIQUEMES",
"ARIQUEMES", "ARIQUEMES", "ARIQUEMES", "ARIQUEMES", "ARIQUEMES",
"ARIQUEMES", "ARIQUEMES", "ARIQUEMES", "ARIQUEMES"), Programa = c("",
"", "", "", "PMAT", "", "", "", "PMAT", "", "", "", "PMAT", "",
"", "", "", "", "", "", "", "", "", "", "", "PMAT", "", "", "",
"", "", "", "", "")), class = "data.frame", row.names = c("1",
"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13",
"14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24",
"25", "26", "27", "28", "29", "30", "31", "32", "33", "34"))