我有一个数据框架:
ID value value_type
A 256 new
B 543 new
A 544 old我想将janitor::tabyl应用于列ID和value_type,以获取:
ID
n percent
A 2 0.66
B 1 0.33
value_type
n percent
new 2 0.66
old 1 0.33我怎么能这么做呢?当我这样做的时候:
janitor::tabyl(dt[, c(ID, value_type)])它不会按列分隔这些统计表
发布于 2021-01-27 00:12:02
library(purrr)
library(dplyr)
df %>% map(., ~tabyl(.))您可以选择所需的列:
df %>%
select(ID, value_type) %>%
map(., ~tabyl(.))这为我们提供了:
$ID
. n percent
A 2 0.6666667
B 1 0.3333333
$value_type
. n percent
new 2 0.6666667
old 1 0.3333333发布于 2021-02-20 12:39:57
您可以很容易地在baseR中完成此操作
apply(mpg[,1:2], 2, tabyl)
$manufacturer
newX[, i] n percent
audi 18 0.07692308
chevrolet 19 0.08119658
dodge 37 0.15811966
ford 25 0.10683761
honda 9 0.03846154
hyundai 14 0.05982906
jeep 8 0.03418803
land rover 4 0.01709402
lincoln 3 0.01282051
mercury 4 0.01709402
nissan 13 0.05555556
pontiac 5 0.02136752
subaru 14 0.05982906
toyota 34 0.14529915
volkswagen 27 0.11538462
$model
newX[, i] n percent
4runner 4wd 6 0.025641026
a4 7 0.029914530
a4 quattro 8 0.034188034
a6 quattro 3 0.012820513
altima 6 0.025641026
c1500 suburban 2wd 5 0.021367521
camry 7 0.029914530
camry solara 7 0.029914530
caravan 2wd 11 0.047008547
civic 9 0.038461538
corolla 5 0.021367521
corvette 5 0.021367521
dakota pickup 4wd 9 0.038461538
durango 4wd 7 0.029914530
expedition 2wd 3 0.012820513
explorer 4wd 6 0.025641026
f150 pickup 4wd 7 0.029914530
forester awd 6 0.025641026
grand cherokee 4wd 8 0.034188034
grand prix 5 0.021367521
gti 5 0.021367521
impreza awd 8 0.034188034
jetta 9 0.038461538
k1500 tahoe 4wd 4 0.017094017
land cruiser wagon 4wd 2 0.008547009
malibu 5 0.021367521
maxima 3 0.012820513
mountaineer 4wd 4 0.017094017
mustang 9 0.038461538
navigator 2wd 3 0.012820513
new beetle 6 0.025641026
passat 7 0.029914530
pathfinder 4wd 4 0.017094017
ram 1500 pickup 4wd 10 0.042735043
range rover 4 0.017094017
sonata 7 0.029914530
tiburon 7 0.029914530
toyota tacoma 4wd 7 0.029914530发布于 2021-01-27 02:49:05
使用data.table,我们可以在.SDcols中指定感兴趣的列,使用lapply循环遍历这些列,将tabyl包装在list中并返回这些list列(因为tabyl的输出是一个tabyl/data.frame类
library(data.table)
out <- setDT(df1)[, lapply(.SD, function(x) list(tabyl(x))), .SDcols = c('ID', 'value_type')]-output
out$ID[[1]]
# x n percent
# A 2 0.6666667
# B 1 0.3333333https://stackoverflow.com/questions/65904779
复制相似问题