R 如果条件为',则在mutate()中使用if_else()时要保留原始值;t遇见
我有下面一行代码,我试图更改数据帧中不同位置(QB、RB、WR、TE)的fpts值,但保持其他两个位置(DST、K)的fpts值不变。如果我运行它,QB、RB、WR、TE位置值会因FPT而改变,但DST和K FPT会变为0。知道为什么会这样吗?fpts列中已经有所有位置的值,但我只想更改我提到的这四个位置的fpts值R 如果条件为',则在mutate()中使用if_else()时要保留原始值;t遇见,r,if-statement,dplyr,mutate,R,If Statement,Dplyr,Mutate,我有下面一行代码,我试图更改数据帧中不同位置(QB、RB、WR、TE)的fpts值,但保持其他两个位置(DST、K)的fpts值不变。如果我运行它,QB、RB、WR、TE位置值会因FPT而改变,但DST和K FPT会变为0。知道为什么会这样吗?fpts列中已经有所有位置的值,但我只想更改我提到的这四个位置的fpts值 library(tidyverse) library(dplyr) projections <-read_csv("https://raw.githubuserconten
library(tidyverse)
library(dplyr)
projections <-read_csv("https://raw.githubusercontent.com/samhoppen/2020_FF_Analysis/master/Functions/Projections.csv")
projections <- projections %>%
mutate(fpts = (if(position == "QB" || position == "RB" || position == "WR" || position == "TE"){
(pass_yds * 0.1) +
(pass_tds * 4) +
(pass_ints * -2) +
(rush_yds * 0.1) +
(rush_tds * 6) +
(fl * -2) +
(rec_rec * 1) +
(rec_yds * 0.1) +
(rec_tds * 6)}
else{fpts}))
库(tidyverse)
图书馆(dplyr)
投影当/ifelse
而不是if/else
时,我们可以使用case\u,因为if/else
没有矢量化,即它需要单个元素而不是整个列
library(dplyr)
projections %>%
mutate(fpts = case_when(position %in% c('QB', 'RB', 'WR', 'TE')~
(pass_yds * 0.1) +
(pass_tds * 4) +
(pass_ints * -2) +
(rush_yds * 0.1) +
(rush_tds * 6) +
(fl * -2) +
(rec_rec * 1) +
(rec_yds * 0.1) +
(rec_tds * 6), TRUE ~ fpts))
# A tibble: 790 x 16
# player team position pass_att pass_cmp pass_yds pass_tds pass_ints rush_att rush_yds rush_tds fl fpts
# <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
# 1 Lamar… BAL QB 465. 297. 3465. 29.8 11.9 156. 968. 5.5 4.1 564.
# 2 Patri… KC QB 558. 361 4453. 33.3 9.8 72.3 353. 3.7 3.5 609.
# 3 Dak P… DAL QB 558. 363 4463. 28.6 12.4 53.4 269. 3.8 3.3 579.
# 4 Desha… HOU QB 515. 339. 3997. 25.3 14.8 94.8 509. 5.1 3.7 545.
# 5 Russe… SEA QB 478. 312 3842. 29.2 8.5 77.7 414. 2.5 2.9 535.
# 6 Kyler… ARI QB 542. 349. 3733. 24.9 15.1 94.9 525 3.7 2.7 512.
# 7 Josh … BUF QB 510. 299. 3479. 20.1 13.8 106. 612. 7.2 5.2 495.
# 8 Tom B… TB QB 559 347. 4447. 29.3 11.8 25.7 32.3 1.8 2.6 547.
# 9 Matt … ATL QB 621. 407. 4604. 27.6 14.9 33 128. 1 4.6 551.
#10 Drew … NO QB 517. 365. 3889 30.5 9.5 19.7 21.7 1.7 1.8 501.
# … with 780 more rows, and 3 more variables: rec_rec <dbl>, rec_yds <dbl>, rec_tds <dbl>
库(dplyr)
预测%>%
变异(fpts=情况_,当(位置%c('QB','RB','WR','TE')~
(通过码*0.1)+
(通过tds*4)+
(及格分数*-2)+
(拉什伊兹*0.1)+
(拉什_tds*6)+
(fl*-2)+
(记录*1)+
(建议码*0.1)+
(记录tds*6),真值~fpts)
#A tibble:790 x 16
#球员团队位置传球(接球传球)(接球传球)(接球传球)(接球传球)(接球传球)(接球传球)(接球传球)(接球传球
#
#1拉马尔…巴尔QB 465。297346529.8 11.9 156. 9685.5 4.1 564.
#2帕特里…KC QB 558。361 4453. 33.3 9.8 72.3 353. 3.7 3.5 609.
#3天…我的QB558。363 4463. 28.6 12.4 53.4 269. 3.8 3.3 579.
#4德沙…侯QB515。339399725.3 14.8 94.8 509. 5.1 3.7 545.
#5罗素…海QB 478。312 3842. 29.2 8.5 77.7 414. 2.5 2.9 535.
#6凯勒…阿里QB 542。349373324.9 15.1 94.9 525 3.7 2.7 512.
#7乔希…BUF QB 510。299347920.1 13.8 106. 6127.2 5.2 495.
#8汤姆B…TB QB 559 347。444729.3 11.8 25.7 32.3 1.8 2.6 547.
#9马特…ATL QB 621。407460427.6 14.9 33 128. 1 4.6 551.
#10号……编号QB517。3653889 30.5 9.5 19.7 21.7 1.7 1.8 501.
#…增加780行,增加3个变量:rec_rec、rec_yds、rec_tds
mutate(fpts=if_-else(一些和(长的)条件),新的_值,fpts))
如果条件不成立,则保留其原始值。顺便说一句,if_-else(位置%c(“QB”、“RB”、“WR”、“TE”),(大量数学),fpts)