我有一个像这样的数据框:
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)
产生这个:
但我想要另一列来总计这些计数的值列,例如
有什么建议吗?谢谢
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)
或者与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)