我们有一个数据框,如下所示:
raw<-data.frame(v1=c("A","B","C","D"),v2=c(NA,"B","C","A"),v3=c(NA,"A",NA,"D"),v4=c(NA,"D",NA,NA))
我需要以下格式的结果数据框:
result<-data.frame(v1=c("A","B","C","D"), v2=c(3,2,2,3))
使用以下代码来获取某一特定列的计数:
count_raw<-sqldf("SELECT DISTINCT(v1) AS V1, COUNT(v1) AS count FROM raw GROUP BY v1")
这将返回单个列中唯一值的计数。
任何帮助将不胜感激。
我们可以使用apply
与MARGIN = 1
cbind(raw[1], v2=apply(raw, 1, function(x) length(unique(x[!is.na(x)]))))
如果是每一列
sapply(raw, function(x) length(unique(x[!is.na(x)])))
或者,如果我们需要基于所有列的计数,请转换为matrix
并使用table
table(as.matrix(raw))
# A B C D
# 3 2 2 3
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句