我想统计一个数字在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.frame
,order
基于"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))