R 对数据框列进行计算时忽略计算中的NA

R 对数据框列进行计算时忽略计算中的NA,r,dataframe,na,R,Dataframe,Na,我有如下格式的数据框: structure(list(First = c("3.2", "3.2", "3.2", NA, "3.3", NA, NA), `cut-off` = c("100000", "100000", "100000", NA, "100000", NA, NA), Second = c("1.1&qu

我有如下格式的数据框:

structure(list(First = c("3.2", "3.2", "3.2", NA, "3.3", NA, 
NA), `cut-off` = c("100000", "100000", "100000", NA, "100000", 
NA, NA), Second = c("1.1", "1.2", "1.2", NA, "1.2", "1.6", NA
), Bonus = c(NA_character_, NA_character_, NA_character_, NA_character_, 
NA_character_, NA_character_, NA_character_), Fixed = c(NA, NA, 
NA, "4000", NA, NA, NA)), row.names = c(NA, -7L), class = c("tbl_df", 
"tbl", "data.frame"))

# A tibble: 6 x 5
  First `cut-off` Second Bonus Fixed
  <chr> <chr>     <chr>  <chr> <chr>
1 3.2   100000    1.1    NA    NA   
2 3.2   100000    1.2    NA    NA   
3 3.2   100000    1.2    NA    NA   
4 NA    NA        NA     NA    4000 
5 3.3   100000    1.2    NA    NA   
6 NA    NA        1.6    NA    NA 
7 NA    NA        NA     NA    NA

如何执行此操作?

我们可以在转换
类型后使用
行和
,因为某些列类型是
字符

library(dplyr)
df1 %>%
   type.convert(as.is = TRUE) %>%        
   mutate(Bonus = as.numeric(Bonus), 
   Total=rowSums(cbind(First*`cut-off`/100, 
         (Second*300000/100), Bonus, Fixed), na.rm = TRUE))
-输出

# A tibble: 7 x 6
#  First `cut-off` Second Bonus Fixed Total
#  <dbl>     <int>  <dbl> <dbl> <int> <dbl>
#1   3.2    100000    1.1    NA    NA  6500
#2   3.2    100000    1.2    NA    NA  6800
#3   3.2    100000    1.2    NA    NA  6800
#4  NA          NA   NA      NA  4000  4000
#5   3.3    100000    1.2    NA    NA  6900
#6  NA          NA    1.6    NA    NA  4800
#7  NA          NA   NA      NA    NA     0
#一个tible:7 x 6
#第一个“截止”第二个奖金固定总额
#            
#1 3.2 100000 1.1 NA 6500
#2 3.2 100000 1.2 NA 6800
#3.2 100000 1.2 NA 6800
#4 NA NA 4000
#5 3.3 100000 1.2 NA NA 6900
#6Na-NA 1.6Na-NA 4800
#7钠钠钠0

谢谢您的支持。我得到了一条错误消息,尽管我说
error:mutate()输入总计有问题。未找到x对象“second”,我输入的总计为行和(…)。
此外,奖金列不仅是字符列,而且是其他列。您是否有任何理由只转换了
bounu
列?你能解释一下为什么我们有
type.convert
?@Roozbeh\u你有
Second
作为列名,而不是
Second
# A tibble: 7 x 6
#  First `cut-off` Second Bonus Fixed Total
#  <dbl>     <int>  <dbl> <dbl> <int> <dbl>
#1   3.2    100000    1.1    NA    NA  6500
#2   3.2    100000    1.2    NA    NA  6800
#3   3.2    100000    1.2    NA    NA  6800
#4  NA          NA   NA      NA  4000  4000
#5   3.3    100000    1.2    NA    NA  6900
#6  NA          NA    1.6    NA    NA  4800
#7  NA          NA   NA      NA    NA     0