r-使用mutate_if()和mutate_all()生成NA列



我只想计算数值列的平均值和值之间的差。

我的数据集如下:

Player Pos Age Team  G GS  MPG  FG FGA   FG%  3P 3PA   3P%  2P 2PA   2P%  eFG%  FT FTA   FT% ORB DRB TRB AST STL BLK
1  Álex Abrines  SG  24  OKC 75  8 15.1 1.5 3.9 0.395 1.1 2.9 0.380 0.4 0.9 0.443 0.540 0.5 0.6 0.848 0.3 1.2 1.5 0.4 0.5 0.1
2    Quincy Acy  PF  27  BRK 70  8 19.4 1.9 5.2 0.356 1.5 4.2 0.349 0.4 1.0 0.384 0.496 0.7 0.9 0.817 0.6 3.1 3.7 0.8 0.5 0.4
3  Steven Adams   C  24  OKC 76 76 32.7 5.9 9.4 0.629 0.0 0.0 0.000 5.9 9.3 0.631 0.629 2.1 3.8 0.559 5.1 4.0 9.0 1.2 1.2 1.0
4   Bam Adebayo   C  20  MIA 69 19 19.8 2.5 4.9 0.512 0.0 0.1 0.000 2.5 4.8 0.523 0.512 1.9 2.6 0.721 1.7 3.8 5.5 1.5 0.5 0.6
5 Arron Afflalo  SG  32  ORL 53  3 12.9 1.2 3.1 0.401 0.5 1.3 0.386 0.7 1.7 0.413 0.485 0.4 0.5 0.846 0.1 1.2 1.2 0.6 0.1 0.2
6  Cole Aldrich   C  29  MIN 21  0  2.3 0.2 0.7 0.333 0.0 0.0    NA 0.2 0.7 0.333 0.333 0.1 0.3 0.333 0.1 0.6 0.7 0.1 0.1 0.0

我尝试使用mutate_if((和mutate_all((来解决这个问题:

d_residuals <-
d_season_combined %>%
mutate_if(is.numeric) %>%
mutate_all(~. - mean(., na.rm = TRUE))

但结果是这样的:

Player Pos       Age Team          G         GS         MPG         FG       FGA         FG%         3P        3PA
1     NA  NA -1.994393   NA  26.208411 -14.990654  -4.1758879 -1.6135514 -2.973738 -0.04825306  0.2562617  0.4902804
2     NA  NA  1.005607   NA  21.208411 -14.990654   0.1241121 -1.2135514 -1.673738 -0.08725306  0.6562617  1.7902804
3     NA  NA -1.994393   NA  27.208411  53.009346  13.4241121  2.7864486  2.526262  0.18574694 -0.8437383 -2.4097196
4     NA  NA -5.994393   NA  20.208411  -3.990654   0.5241121 -0.6135514 -1.973738  0.06874694 -0.8437383 -2.3097196
5     NA  NA  6.005607   NA   4.208411 -19.990654  -6.3758879 -1.9135514 -3.773738 -0.04225306 -0.3437383 -1.1097196
6     NA  NA  3.005607   NA -27.791589 -22.990654 -16.9758879 -2.9135514 -6.173738 -0.11025306 -0.8437383 -2.4097196

如果你能帮助我,我将不胜感激!

我们可以在mutate_if中传递函数。在OP的帖子中,它与.predicate(is.numeric(一起使用,而没有函数调用(.funs(。

library(dplyr)
d_residuals <-  d_season_combined %>%
mutate_if(is.numeric, ~ . - mean(., na.rm = TRUE)) 

最新更新