r-数据帧中跨列的变量值的计数

  • 本文关键字:变量值 数据帧 r count
  • 更新时间 :
  • 英文 :


我想统计一个数字在df中出现的次数。我特别想要一个输出#和频率计数的变量。这是一些数据,尽管这是数据的节略版本。我有将近45个专栏。

a1  b1   c1
23  23   1
24  4    18
2   2    2
18  NA   NA

我想要这个:

value  freq
1       1
2       2
4       1
18      2
23      2
24      1

我试过这个,但它没有做我想做的事。

library(plyr)  
count(df, vars = NULL, wt_var = NULL)

有人能帮忙吗?

我们可以unlist数据帧,获得table,转换为data.frameorder基于"Freq"列的行

out <- as.data.frame(table(unlist(df1)))
out[order(-out$Freq),]

或者使用tidyverse,重新整形为"长"格式pivot_longer,并获得"值"列的count

library(tidyr)
library(dplyr)
df1 %>%
pivot_longer(everything(), values_drop_na = TRUE) %>%
count(value) %>%
arrange(desc(n))

-输出

# A tibble: 6 x 2
#  value     n
#  <int> <int>
#1     2     3
#2    18     2
#3    23     2
#4     1     1
#5     4     1
#6    24     1

数据

df1 <- structure(list(a1 = c(23L, 24L, 2L, 18L), b1 = c(23L, 4L, 2L, 
NA), c1 = c(1L, 18L, 2L, NA)), class = "data.frame", row.names = c(NA, 
-4L))

最新更新