计算不包含“NA”的数据帧的行[重复]
Posted
技术标签:
【中文标题】计算不包含“NA”的数据帧的行[重复]【英文标题】:Count rows of a data frame which do not contain `NA` [duplicate] 【发布时间】:2012-12-31 10:18:53 【问题描述】:可能重复:R - remove rows with NAs in data.frame
我有一个从以下函数派生的数据框:
complete <- function(directory,id = 1:332)
csvfiles <- sprintf("/Users/myname/Desktop/%s/%03d.csv", directory, id)
nrows <- sapply( csvfiles, function(f) nrow(read.csv(f)))
rowlabels <- nrow(nrows)
data.frame(id=sprintf('%3d', id),
nobs=sapply(csvfiles,function(x) length(count.fields(x))),
row.names=rowlabels
)
此函数计算对象 csvfiles 生成的目录中包含的每个文件的行数。然后它输出一个数据框,显示文件编号以及行数(所以两列)
我以为我知道了,但问题是我现在必须排除每个文件中存在 NA
实例的行。
如何编辑它以忽略每个文件中的那些行,只计算不存在 NA
s 的行?
【问题讨论】:
这是您的第 N 篇文章,标题为 R-project。那是多余的。只需像您所做的那样使用[r]
标签。并随时阅读其他一些帖子。
看看?complete.cases
。几个月前完成了同样的在线课程,我很确定它会在某些时候在讲座中被提及,请留意类似的提示。
请先搜索再发帖。在 google 或 s.o. 上两分钟搜索会找到您的答案。
您对@thelatemail 的回复在您的头顶上方放置了一个闪烁的大霓虹灯标志,它尖叫着“我没有阅读显示给我的问题,也没有费心阅读有关该功能的文档。 "
这不是重复的。 OP 不是在问如何删除行,而是在问如何计算完整的行。是的,这是一个“家庭作业问题”。
【参考方案1】:
替换这一行:
nrows <- sapply( csvfiles, function(f) nrow(read.csv(f)))
使用这一行,它使用complete.cases
函数:
nrows <- sapply( csvfiles, function(f) nrow(complete.cases(read.csv(f))))
complete.cases
接受一个数据帧并返回一个具有相同列的数据帧,但所有包含至少一个NA
的行都被丢弃。
【讨论】:
嗯,对我来说,complete.cases
似乎返回一个逻辑向量,而不是一个过滤的数据帧。所以我不得不执行sum
,而不是nrow
-1 ,完整的案例不返回过滤的数据帧,而是返回一个逻辑向量。请纠正这个:)以上是关于计算不包含“NA”的数据帧的行[重复]的主要内容,如果未能解决你的问题,请参考以下文章
R - 检查 r 数据框行的任何列中是不是存在 NA,如果存在,则删除该行 [重复]