R - 计算数据框中的行数,列中包含 NA/"" 和总值列

Sco*_*tEU 5 r

我有一个像这样的数据框:

df = data.frame (Ref  = c("1", "2", "3", "4"),
                  start_date = c("01/01/20", "02/04/21", NA, NA),
                  text = c("foo", NA, "bar", "foo"),
                  value= c(1000, 7000, 500, 200)
                  )
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我想要一个数据框来计算列中 NA 或 BLANK 的数量并对值列进行总计。

到目前为止,我有以下代码:

naDF = colSums(is.na(df)|df == '')
naDF = data.frame(as.list(naDF))
naDF = melt(naDF)
Run Code Online (Sandbox Code Playgroud)

产生这个:

在此输入图像描述

但我想要另一列来总计这些计数的值列,例如

在此输入图像描述

有什么建议吗?谢谢

Ony*_*mbu 5

a <- df$value * is.na(df)
data.frame(value = colSums(a>0), total_value = colSums(a))

           value total_value
Ref            0           0
start_date     2         700
text           1        7000
value          0           0
Run Code Online (Sandbox Code Playgroud)


akr*_*run 5

或者与base R

m1 <- df$value * NA^!is.na(df)
data.frame(total_value = colSums(m1, na.rm = TRUE),
    value= colSums(!is.na(m1)))
Run Code Online (Sandbox Code Playgroud)

-输出

            total_value value
Ref                  0     0
start_date         700     2
text              7000     1
value                0     0
Run Code Online (Sandbox Code Playgroud)