【问题标题】:Handling NaN values in custom function summary在自定义函数摘要中处理 NaN 值
【发布时间】:2020-09-24 04:27:55
【问题描述】:

我有自定义函数,我想用“0.0”替换 NaN 和 Na 值 什么是最简单的解决方案。

df <- data.frame(Name = c("asdf","kjhgf","cvbnm","rtyui","cvbnm","jhfd","cvbnm","sdfghj","cvbnm","dfghj","cvbnm"),
                 sale=c(27,28,NA,16,NA,25,NA,14,NA,18,NA),
                 city=c("CA","TX","MN","NY","TX","MT","HU","KL","TX","SA","TX"),
                 Dept = c("HH","MM","NN","MM","AA","VV","MM","HU","JJ","MM","ZZ"))

df$sale = as.numeric(df$sale)
data=df
filter_var= "Name"
filter_val="cvbnm"
Text_var="sale"
Name_of_variable="EXP"
decimal =TRUE
footer=""
Suff="%"

filter_val = ensym(filter_val)
filter_var = rlang::parse_expr(filter_var)
Text_var= ensym(Text_var)
  numdig <- if (decimal == TRUE) {1} else {0}
  dat1<-data %>% select(!!filter_var,!!Text_var) %>% filter(!is.na(!!Text_var))
  dat2<- dat1 %>% filter((!!filter_var == filter_val))
  
  summ_tab1<- dat2 %>% 
    select(!!Text_var)  %>%  summarise(
      q25 = format(round(quantile(!! Text_var,  type=6, probs = seq(0, 1, 0.25), na.rm=TRUE)[2],digits = numdig),nsmall = numdig),
      Median = format(round(quantile(!! Text_var, type=6, probs = seq(0, 1, 0.25), na.rm=TRUE)[3],digits = numdig),nsmall = numdig),
      Average = format(round( mean(!! Text_var, na.rm=TRUE),digits = numdig),nsmall = numdig),
      q75 = format(round(quantile(!! Text_var, type=6, probs = seq(0, 1, 0.25), na.rm=TRUE)[4],digits = numdig) ,nsmall = numdig),
      N = sum(!is.na(!!Text_var)))
  summ_tab1

summ_tab1[2,](is.nan(summ_tab1[2,0])) <- "0.0"

我试过了,但是不行

【问题讨论】:

  • 你试过df[is.na(df)] &lt;- summ_tab12 吗?
  • summ_tab1[2,](is.nan(summ_tab1[2,0]))

标签: r function dplyr


【解决方案1】:

这是你想要的吗?

summ_tab1[1, 1:4] <- "0.0"

【讨论】:

  • 实际上这是一个函数,我想保持动态,这样如果出现 NaN 或 na 值将被“0.0”替换。 summ_tab1[1, 1:4]
  • 这个怎么样:summ_tab1 %&gt;% mutate_all(~if_else(is.na(.) | . %in% c("NA", "NaN"), "0.0", as.character(.)))
  • 是的,这行得通。但这不会替换 N 的值,对吧.....??
  • 只要您的 N 列没有NANaN。或者,如果您想安全起见,请改为:summ_tab1 %&gt;% mutate_at(1:4, ~if_else(is.na(.) | . %in% c("NA", "NaN"), "0.0", as.character(.)))
猜你喜欢
  • 2013-01-19
  • 2022-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-01
  • 2015-12-09
  • 1970-01-01
相关资源
最近更新 更多