Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R按组跟踪列中的更改时使用case__R_Dataframe_If Statement_Dplyr_Case When - Fatal编程技术网

R按组跟踪列中的更改时使用case_

R按组跟踪列中的更改时使用case_,r,dataframe,if-statement,dplyr,case-when,R,Dataframe,If Statement,Dplyr,Case When,我有一个课程注册数据集,我试图跟踪学生在整个学期中是否放弃、增加或保留课程,并确定他们的注册“路径”。也就是说,我想记录他们是否参加了BIOL101,是否放弃了参加BIOL202。我的数据框如下所示: YRTR TECH_ID COU_ID SUBJ COU_NBR GENDER RACE sub_cou status path 20173 108 217 MUSC 2231 Male White MUSC 2231

我有一个课程注册数据集,我试图跟踪学生在整个学期中是否放弃、增加或保留课程,并确定他们的注册“路径”。也就是说,我想记录他们是否参加了BIOL101,是否放弃了参加BIOL202。我的数据框如下所示:

YRTR    TECH_ID COU_ID  SUBJ    COU_NBR GENDER  RACE    sub_cou     status     path
20173   108      217    MUSC    2231    Male    White   MUSC 2231   retained
20173   108      218    MUSC    2281    Male    White   MUSC 2281   retained
20173   8429     574    ECON    2201    Male    White   ECON 2201   retained
20173   8429     720    BUSN    2120    Male    White   BUSN 2120   retained
20173   9883     60     ECON    2202    Male    White   ECON 2202   added
20173   15515    95     PHIL    1102    Female  White   PHIL 1102   retained
20183   8207     478    ART     1102    Female  White   ART 1102    retained
20183   8207     1306   ART     1130    Female  White   ART 1130    added
20183   8207     403    ART     1125    Female  White   ART 1125    dropped


我试图填写最右边的“路径”栏。这个想法是,如果学生被保留在像第一行一样的课程中,路径将为
2231->2231
。具体而言,我关注的是学科内的课程转移。因此,在数据集的末尾,ID8207将有一个路径看起来像
1102->1102
,另一个路径看起来像
1125->1130

我最初尝试将数据帧拆分为两个数据帧(一个在删除期间之前,一个在删除期间之后),然后像这样重新连接它们:


data5 101

第27届编辑的解决方案

你好,再次@alexvc,开始了。稍微了解一下您的数据。你忘记了一个学生掉1加2的情况,在这种情况下,“路径”变得混乱。我为您提供了一个清晰显示路径的解决方案

库(dplyr)
图书馆(tidyr)
数据5%>%
组员(YRTR、技术ID、科目、状态)%>%
变异=
什么时候(
状态==“已添加”~1,
真~0
),
麻木的=
什么时候(
状态==“已删除”~1,
真~0
),
右侧=
什么时候(
numbadd==1~粘贴(COU_NBR,collapse=“and”)
),
左边=
什么时候(
numbdrop==1~粘贴(COU_NBR,collapse=“and”)
)
) %>%
分组依据(YRTR、技术ID、Subc)%>%
变异(总添加删除=ifelse(状态==“保留”),
0, 
总和(numadd)+总和(numdrop))%>%
tidyr::填充(左侧、右侧,.direction=“downpup”)%>%
组员(YRTR、技术ID、科目、状态)%>%
变异(路径)=
什么时候(
状态==“保留”~粘贴(COU_NBR,
库恩布尔,
sep=“->”,
状态==“已添加”&总添加量==1~粘贴(“NA”,
库恩布尔,
sep=“->”,
状态==“已删除”&总添加量==1~粘贴(COU\u NBR,
“不适用”,
sep=“->”,
总添加量>=2~粘贴(左侧,
右边,,
sep=“->”,
对~“有个问题”
)) %>%
安排(YRTR,技术ID)%>%
选择(-COU_ID、-GENDER、-RACE、-rightside、-leftside、-numbadd、-numdrop、-total_add_drop)
#>#A tibble:17 x 7
#>#组:YRTR、技术ID、主题、状态[13]
#>YRTR技术ID主题库NBR子库状态路径
#>                                              
#>1 20173 108麝香2231麝香2231保留2231->2231
#>2 20173 108麝香2281麝香2281保留2281->2281
#>3 20173 3889经济2202经济2202下降2202->NA
#>4 20173 8429经济2201经济2201保留2201->2201
#>5 20173 8429 BUSN 2120 BUSN 2120保留的2120->2120
#>6 20173 9883经济2202经济2202新增NA->2202
#>7 20173 15515菲尔1102菲尔1102保留1102->1102
#>8 20183 8207艺术1102艺术1102保留1102->1102
#>9 20183 8207第1130条第1130条增加了1125->1130和2345条
#>10 20183 8207艺术2345艺术2345增加1125->1130和2345
#>11 20183 8207艺术1125艺术1125下降1125->1130和2345
#>12 20183 8209艺术2345艺术2345新增1125->2345
#>13 20183 8209艺术1125艺术1125下降1125->2345
#>14 20183 8270 PSYC 1001 PSYC 1001丢弃1001和1002->1003和1004
#>15 20183 8270 PSYC 1003 PSYC 1003添加了1001和1002->1003和1004
#>16 20183 8270 PSYC 1002 PSYC 1002丢弃1001和1002->1003和1004
#>17 20183 8270 PSYC 1004 PSYC 1004添加了1001和1002->1003和1004
您的数据与其他测试用例


data5请使用
dput
提供数据,谢谢!你好!谢谢你的帮助!我在尝试运行时确实遇到此错误:
match.arg(.direction)中的错误:'arg'应该是“down”、“up”中的一个。
Hi,请确保您拥有最新的CRAN版本
tidyr
应该是1.1.2。1.0.0中实现了“downup”
data5$status.x=="retained" ~ paste0(data5$COU_NBR.x, "->", data5$COU_NBR.x),
((data5$status.x=="added") & (data5$status.y=="dropped")) ~ paste0(data5$COU_NBR.y, "->", data5$COU_NBR.x),
((data5$status.x=="dropped") & (data5$status.y=="added")) ~ paste0(data5$COU_NBR.x, "->", data5$COU_NBR.y)                
)