我对R相当陌生,正在try 构建一个数据框,其中包含嵌套列表中每个元素的每个唯一观测的频率:

lst <- list(
  c('A', 'A', 'A'), 
  c("A", "B"), 
  c("A", "A", "B", "B", "B", "B"), 
  c("A", "C", "C"), 
  c("B", "A")
)

我可以不考虑列表中的元素或仅针对其中一个元素来计算如何做到这一点:

prop <- prop.table(table(unlist(lapply(lst, unique))))
as.data.frame(prop)

# or

as.data.frame(prop.table(table(lst[[1]]))

但没有说明如何有效地将两者结合起来.

我想要的输出是这样的:

type  1  2   3  4   5
======================
A     1 .5 .33 .33 .5 
B     0 .5 .67  0  .5
C     0  0  0  .67  0

此外,我希望输出的位数比仅使用pro.table()时的位数多.如有任何建议,不胜感激

推荐答案

我们可以在一行中完成这项工作--诀窍是创建一个两列数据.

proportions(table(stack(setNames(lst, seq_along(lst)))), 2)

-输出

    ind
values         1         2         3         4         5
     A 1.0000000 0.5000000 0.3333333 0.3333333 0.5000000
     B 0.0000000 0.5000000 0.6666667 0.0000000 0.5000000
     C 0.0000000 0.0000000 0.0000000 0.6666667 0.0000000

R相关问答推荐

在特定列上滞后n行,同时扩展框架的长度

从有序数据中随机抽样

获取一个数据库框架的摘要,该数据库框架将包含一列数据库框架,

如何在R中合并和合并多个rabrame?

如何通过Docker部署我的shiny 应用程序(多个文件)

将数据集中的值增加到当前包含的最大值

在R中无法读入具有Readxl和lApply的数据集

LOF中的插图短文字幕

如何用书面利率绘制geom_bar图

更改STAT_VALLES/STAT_PEAKS中的箭头线宽/大小

KM估计的差异:SvyKm与带权重的调查

如何在使用箭头R包(箭头::OPEN_DATASSET)和dplyr谓词时编写具有整齐计算的函数?

来自程序包AFEX和amp;的类/函数和NICE_TABLE&冲突

R中时间间隔的大向量与参考时间间隔的相交

有没有办法将基于每个值中出现的两个关键字或短语的字符串向量重新编码为具有这两个值的新向量?

将某个阈值以下的列中的值分类到不同的列中,否则保持该列的原样

R/shiny APP:如何充分利用窗口?

在直方图中显示两个变量

将字符变量出现次数不相等的字符框整形为pivot_wider,而不删除重复名称或嵌套字符变量

Data.table条件合并