Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.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
通过不在dplyr中工作的突变将_分组_R_Group By_Dplyr - Fatal编程技术网

通过不在dplyr中工作的突变将_分组

通过不在dplyr中工作的突变将_分组,r,group-by,dplyr,R,Group By,Dplyr,我很有信心这是“操作员错误”,但如果有任何帮助,我将不胜感激。 我有一个(示例)数据帧 foo <- data.frame("School"=c(1,1,1,1,2,2,2,2,3,3,3,3), "Grade"=c(1,2,3,4,1,2,3,4,1,2,3,4), "e2005" = c(180,221,193,192,218,209,211,236,222,283,195,225),

我很有信心这是“操作员错误”,但如果有任何帮助,我将不胜感激。 我有一个(示例)数据帧

foo <- data.frame("School"=c(1,1,1,1,2,2,2,2,3,3,3,3),
                 "Grade"=c(1,2,3,4,1,2,3,4,1,2,3,4),
                  "e2005" = c(180,221,193,192,218,209,211,236,222,283,195,225),
                  "e2006" = c(207,194,234,204,208,228,224,216,235,265,263,191))
预期的结果是:

School  Grade   2005    2006    r2006
1       1       180     207     NA
1       2       221     194     1.077777778
1       3       193     234     1.058823529
1       4       192     204     1.056994819
2       1       218     208     NA
2       2       209     228     1.04587156
2       3       211     224     1.071770335
2       4       236     216     1.023696682
3       1       222     235     NA
3       2       283     265     1.193693694
3       3       195     263     0.929328622
3       4       225     191     0.979487179
但我得到的是:

School  Grade   2005    2006    r2006
1       1       180     207     NA
1       2       221     194     1.077777778
1       3       193     234     1.058823529
1       4       192     204     1.056994819
2       1       218     208     1.083333333
2       2       209     228     1.04587156
2       3       211     224     1.071770335
2       4       236     216     1.023696682
3       1       222     235     0.995762712
3       2       283     265     1.193693694
3       3       195     263     0.929328622
3       4       225     191     0.979487179
我怀疑我没有正确处理滞后函数,或者我做了其他错误的事情

如蒙协助,将不胜感激。多谢各位

帕特里克

> sessionInfo()
R version 3.3.1 (2016-06-21)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 14393)

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252    LC_MONETARY=English_United States.1252 LC_NUMERIC=C                           LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] dplyr_0.5.0         RevoUtilsMath_8.0.3

有几件事。首先,在group\ U by的行中缺少
%%>%%
。其次,您不必在mutate中调用
foo
。第三,可以使用列名在mutate中执行工作。你的代码应该是:
foo%>%groupby(School)%%>%mutate(r2006=(e2006/lag(e2005))
mutate(foo,r2006=(e2006/lag(e2005))
。或者你可以把整个事情联系起来:
foo%>%groupby(School)%>%mutate(r2006=(e2006/lag(e2005))
。无论哪种方式,都应该通过变量的无引号名称来引用变量。通过使用
foo[,3]
foo[,4]
您已经接触到了全球环境的
foo
副本,而不是使用插入到带有数据参数的
mutate
中的
foo
。@eipi10非常感谢(双方)。这两种解决方案对我都有效,谢谢你向我指出我的错误。干杯,帕特里克
> sessionInfo()
R version 3.3.1 (2016-06-21)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 14393)

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252    LC_MONETARY=English_United States.1252 LC_NUMERIC=C                           LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] dplyr_0.5.0         RevoUtilsMath_8.0.3