繁体   English   中英

有人知道如何在R中编写一个表达式,该表达式计算数据帧的NA值和有效值吗?

[英]Does anybody know how to write an expression in R that counts NA values and valid values for a dataframe?

一个提示是您将使用table()is.na

对于此表达式,您尝试查找NA计数/总计的一列中有特定值。

例:

team    color   state    div
  1       R       NY      1
  2       G       WI      1
  3       P       ND      2
  4       O       CO      2
  5       B       TX      1
  6       NA      MI      2
  7       Y       CA      1
  8       V       NA      2

您能帮我写一个表达式,专门用div12 )计算NA和有效值吗?

我们可以通过将'data.frame'转换为'data.table'( setDT(df1) )来使用data.table ,并按'div'分组,我们不unlist的子集( .SD ),转换为is.na逻辑向量,并用sum计数TRUE值以获得NA的计数,类似地取反( ! )和sum以获得非NA元素的计数。

library(data.table)
setDT(df1)[, {v1 <- is.na(unlist(.SD));list(countNA = sum(v1), 
                          countNoNA = sum(!v1)) } , by = div]
#   div countNA countNoNA
#1:   1       0        12
#2:   2       2        10

或使用tableis.na ,我们复制'div'列以使其长度与未unlist列的长度相同,然后应用table

table(df1$div[row(df1[-4])], is.na(unlist(df1[-4])))

#    FALSE TRUE
#  1    12    0
#  2    10    2

数据

OP出于复制目的将帖子中的数据更改为图像

df1 <- structure(list(team = 1:8, color = c("R", "G", "P", "O", "B", 
NA, "Y", "V"), state = c("NY", "WI", "ND", "CO", "TX", "MI", 
"CA", NA), div = c(1L, 1L, 2L, 2L, 1L, 2L, 1L, 2L)), .Names = c("team", 
"color", "state", "div"), class = "data.frame", row.names = c(NA, -8L))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM