我想使用summarize_all()
函数为数据框中的所有列创建一个具有摘要功能的数据框,并且该数据框具有NA
值。
Input->
a b
0 1
Output->
a.min a.max a.mean a.sd b.min b.max b.mean b.sd
0 0 0 0 1 1 1 1
Code:
df<- df%>%
summarize_all(funs( min , max ,mean, sd))
如何处理此代码中的空值?
答案 0 :(得分:0)
在有问题的数据框中发布了NA值,因为没有足够的数据来计算标准差。见下文:
> df1<-data.frame("a"=0,"b"=1)
> df1%>%
+ summarize_all(funs( min , max ,mean, sd))
a_min b_min a_max b_max a_mean b_mean a_sd b_sd
1 0 1 0 1 0 1 NaN NaN
> df2<-data.frame("a"=c(0,1,2,3),"b"=c(1,3,5,7))
> df2%>%
+ summarize_all(funs( min , max ,mean, sd))
a_min b_min a_max b_max a_mean b_mean a_sd b_sd
1 0 1 3 7 1.5 4 1.290994 2.581989
如果数据集中具有NA值,则使用na.rm = T将解决您的目的:
> df3<-data.frame("a"=c(0,1,NA,3),"b"=c(1,3,5,7))
# with na.rm=T
> df3%>%
+ summarize_all(funs( min , max ,mean, sd),na.rm=T)
a_min b_min a_max b_max a_mean b_mean a_sd b_sd
1 0 1 3 7 1.333333 4 1.527525 2.581989
# without na.rm=T
> df3%>%
+ summarize_all(funs( min , max ,mean, sd))
a_min b_min a_max b_max a_mean b_mean a_sd b_sd
1 NA 1 NA 7 NA 4 NaN 2.581989