不使用base::table()函数计算R studio中的频率

不使用base::table()函数计算R studio中的频率,r,frequency,R,Frequency,我刚开始使用R,我在做一些练习。特别是,我想知道是否有任何方法可以计算X的绝对频率,但不使用函数table(X) 换句话说,我希望得到与表(X)相同的输出,但不使用此函数。有可能吗?如果出于某种原因必须避免使用最直接的方法,即使用表函数,则有多种计算频率的方法(例如,请参见注释)。另一种方法是为循环定义一个: f <- c() 样本数据: set.seed(123) dt <- sample(LETTERS[1:5], 100, replace = T) 然后运行for循环本身,

我刚开始使用R,我在做一些练习。特别是,我想知道是否有任何方法可以计算X的绝对频率,但不使用函数
table(X)


换句话说,我希望得到与
表(X)
相同的输出,但不使用此函数。有可能吗?

如果出于某种原因必须避免使用最直接的方法,即使用
函数,则有多种计算频率的方法(例如,请参见注释)。另一种方法是为循环定义一个

f <- c()
样本数据

set.seed(123)
dt <- sample(LETTERS[1:5], 100, replace = T)
然后运行
for
循环本身,即通过在
dt
中的唯一元素上循环和
求和
将它们按索引排列:

for(i in unique(dt)){
  f[i] <- sum(dt== i)
}

不使用
base::table()
创建频率表的一种方法是使用
tables::tabular()
。下面是一个示例,我们从
mtcars
数据框中为几个离散变量创建表。这种方法的优点是,它除了提供频率外,还提供百分比

library(tables)
tabular((Factor(am) + Factor(carb))~(n=1 + Percent("col")),data = mtcars)
…以及输出:

       n          
        All Percent
 am   0 19  59.375 
      1 13  40.625 
 carb 1  7  21.875 
      2 10  31.250 
      3  3   9.375 
      4 10  31.250 
      6  1   3.125 
      8  1   3.125 
> 
   variable value  freq
   <chr>    <dbl> <dbl>
 1 am           0    19
 2 am           1    13
 3 carb         1     7
 4 carb         2    10
 5 carb         3     3
 6 carb         4    10
 7 carb         6     1
 8 carb         8     1
 9 cyl          4    11
10 cyl          6     7
11 cyl          8    14
另一种方法是使用
dyplr
tidyr
。我们将把
mtcars
数据转换为窄格式,并计算三个分类变量的频率:
cyl
carb
am

library(dplyr) 
library(tidyr)
mtcars %>% mutate(model = rownames(.)) %>% 
     group_by(model) %>% select(model,cyl,carb,am) %>% 
     pivot_longer(.,-model,names_to = "variable",values_to = "value") %>% 
     mutate(count = 1) %>% group_by(variable,value) %>%
     summarise(freq = sum(count)) 
…以及输出:

       n          
        All Percent
 am   0 19  59.375 
      1 13  40.625 
 carb 1  7  21.875 
      2 10  31.250 
      3  3   9.375 
      4 10  31.250 
      6  1   3.125 
      8  1   3.125 
> 
   variable value  freq
   <chr>    <dbl> <dbl>
 1 am           0    19
 2 am           1    13
 3 carb         1     7
 4 carb         2    10
 5 carb         3     3
 6 carb         4    10
 7 carb         6     1
 8 carb         8     1
 9 cyl          4    11
10 cyl          6     7
11 cyl          8    14
可变值频率
凌晨一时零一九分
凌晨2时113分
3碳水化合物17
4碳水化合物210
5碳水化合物3
6碳水化合物4 10
7碳水化合物6 1
8碳水化合物8 1
9团4 11
10团6 7
11共青团8 14

summary()
dplyr::count()
,用于
数据。表
dt[,.N,by=group]
所有这些都将提供与
类似的输出。这是一个很好的答案,但
u