r - 计算缺失值时用行交换列
问题描述
我想编写一个计算数据框中缺失值的函数。在输出中,我想要计算缺失值的数据框。让我们采取以下代码:
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(.))))
}
推荐阅读
- java - 使用嵌套的for循环绘制等边三角形?
- javascript - 嵌套文本的样式不起作用
- java - Spring Boot + JMustache 404 not found error for .html page from /resources/templates 文件夹
- php - 如何使用 sum() 在 mysqli 中添加行
- python - 合并多个大型 DataFrame 的有效方法
- apache-kafka - 使用 SCS 删除消费消息的 kafka 日志
- chart-director - 如何去除 CharDirector ContourLayer 中生成的黑色边框?
- laravel - Laravel 5.5 条件
- angular - 离开页面后 Angular 组件重新加载
- html - HTML + CSS 表单在标题后面滚动但仍然可见