如何解决计算缺失值时,用行交换列
我想写一个函数来计算数据框中的缺失值。在输出中,我想计算缺失值的数据框。让我们看下面的代码:
total_missing<-function(data){
(colSums(is.na(data)))
}
x<-rnorm(100)
y<-runif(100)
z<-rexp(100)
x[51]<-NA
x[57]<-NA
y[61]<-NA
y[62]<-NA
z[10]<-NA
df1<-data.frame(x,y,z)
> total_missing(df1)
x y z
2 2 1
但是现在它不是数据帧。要检查我是否只是使用
> class(total_missing(df1))
[1] "numeric"
因此,第一个想法是使用
> as.data.frame((total_missing(df1)))
(total_missing(df1))
x 2
y 2
z 1
我有数据框!问题是我在行中有变量,而在列中缺少值,我不喜欢这种解决方案。我试图将行更改为列,但问题是此数据框仅包含一列,因此所有内容都已连接(很难划分)。你有什么想法要获得输出:
>proper_data_frame
x y z
2 2 1
class(proper_data_frame)="data.frame"
解决方法
您可以通过转置将输出转换为数据帧:
total_missing<-function(data){
as.data.frame(t(colSums(is.na(data))))
}
total_missing(df1)
# x y z
#1 2 2 1
class(total_missing(df1))
#[1] "data.frame"
您也可以在dplyr
中进行此操作:
library(dplyr)
total_missing<-function(data){
data %>% summarise(across(.fns = ~sum(is.na(.))))
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。