将向量列表转换为计数数据帧[重复]

2024-02-04

我有一个存储在如下列表中的字符向量列表:

basket1 <- c("Apple", "Orange", "Banana", "Apple", "Apple", "Grape")
basket2 <- c("Grape", "Grape", "Grape", "Grape")
basket3 <- c("Kiwi", "Apple", "Cantaloupe", "Banana")
basket4 <- c("Strawberry")
basket5 <- c("Grape", "Grape", "Grape")
FruitBasketList <- list(basket1, basket2, basket3, basket4, basket5)

我想把FruitBasketList放入一个数据框中,其中每行中每个水果的计数与其来自的篮子相匹配。我遇到的主要问题是每个向量中可能有数千种不同的“水果”,并且其中很多会出现多次。

这是我想要的结果:

Basket  Apple   Orange  Banana  Grape   Kiwi    Cantaloupe  Strawberry
basket1 3       1       1       1       0       0           0
basket2 0       0       0       4       0       0           0
basket3 1       0       1       0       1       1           0
basket4 0       0       0       0       0       0           1
basket5 0       0       0       3       0       0           0

显然,这不是我的真实数据,但我想我应该简化数据的样子,以便任何人都能够理解它。不,这不是家庭作业。无论如何,篮子里的水果数量可以是一千个不同的水果,并且每个水果向量的长度不会相同。也可能有数以万计的篮子(向量)。显然,某些水果可以在同一向量(篮子)中重复多次。我一直在努力解决这个问题,但我确信它过于复杂且效率很低。到目前为止,我的解决方案涉及组合所有向量中的所有向量,然后识别所有可能的唯一水果名称。效果很好。然后我正在努力解决的部分是从所有这些唯一的列名称中创建一个空数据框,然后为每个向量计算每个唯一的水果,然后将该值放置在数据框中新行中的正确列中特定篮子中不存在的水果为零。

我用来计算各个向量的代码如下所示:

GetUniqueItemCount <- function(rle, value)
{
  value <- rle$lengths[rle$values == value]
  if (identical(value, integer(0)))
  {
    value <- 0
  }
  value
}

调用它的代码如下所示:

Apple <- GetUniqueItemCount(rle, "Apple") 

正如您在我当前的代码中看到的,我必须事先知道所有可能的水果,并对每种水果的数量进行硬编码,然后将其分配给数据框中预先已知的特定列。不管怎样,我意识到我在这里走错了路,所以我很感激任何关于回到正轨以获得上面显示的我想要的数据框的建议。请随意提供一种完全不同的方法,而不是试图找出如何让我的方法工作,如果这是解决问题的最佳方法。


我会建议mtabulate来自“qdapTools”包。

library(qdapTools)
mtabulate(FruitBasketList)
#   Apple Banana Cantaloupe Grape Kiwi Orange Strawberry
# 1     3      1          0     1    0      1          0
# 2     0      0          0     4    0      0          0
# 3     1      1          1     0    1      0          0
# 4     0      0          0     0    0      0          1
# 5     0      0          0     3    0      0          0

The 包的作者 https://stackoverflow.com/users/1000343/tyler-rinker甚至分享你的头像。漂亮。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将向量列表转换为计数数据帧[重复] 的相关文章

随机推荐

  • 如何在 Flutter 中将 textEditiing 控制器与 Provider 结合使用

    我正在使用提供程序进行状态管理 我的情况是我的表单中有多种类型的字段 问题出在文本字段上 每当我更改文本时 它都会表现得很奇怪 就像输入的文本以相反的顺序显示一样 class MyProvider with ChangeNotifier S
  • 如何使用kazoo客户端进行leader选举?

    这是 kazoo readthedocs 上提到的代码 election zk Election electionpath my identifier 要传递哪些输入参数才能使特定节点成为领导者 即 electionpath 和 my id
  • jQuery - 数据表插件 - 排序问题

    我正在使用 DataTables 插件http datatables net http datatables net 该插件本身非常有用 但我有一个很大的问题 它以以下格式返回某些搜索的地址列表 1 Main Street 12 Main
  • 如何按插入时间对 Meteor 集合进行排序?

    我正在使用 Meteor 进行我的第一个项目 并且在排序方面遇到一些困难 我有一个表单 用户可以在其中输入格言 然后显示在列表中 目前 最新的警句会自动显示在列表底部 有没有一种简单的方法可以让最新的出现在列表的顶部 I tried Tem
  • 修改glm函数以采用R中用户指定的链接函数

    In glm在 R 中 默认链接函数为Gamma家人是inverse identity and log 现在对于我的特定问题 我需要使用伽玛回归和响应Y以及修改后的链接函数 其形式为log E Y 1 于是我考虑修改一些glmR 中的相关函
  • 在启动过程中程序正常退出。 gdb 不会在断点处中断

    我在尝试使用 gdb 调试任何程序的任何代码上都会收到此 gdb 错误 这是重现错误的最简单过程 创建一个main cpp包含以下内容的文件 int main return 0 Run g g main cpp Run gdb a out
  • 如何在创建表中创建非聚集索引?

    Create table FavoriteDish FavID int identity 1 1 primary key not null DishID int references Dishes DishID not null Celeb
  • 有没有办法让跟踪显示 Kogito 中为 DMN 执行的决策顺序?

    我终于运行了我的 dmn quarkus 示例示例 是否有一个属性可以启用跟踪 以便打印执行的决策序列 我注意到 当我为 DMN 模型提供不正确的 JSON 时 Kogito 会做出详细响应 告诉我哪个决策失败了 这太棒了 是否有一个属性可
  • 实体框架代码优先 - 非主键字段的外键

    我有两张表 如下所示 dbo ReviewType ReviewTypeId INT PRIMARY KEY ShortName CHAR 1 Unique Index Description dbo Review ReviewId INT
  • 等待 Casper.js 中的 URL 更改?

    有一个waitForUrl 功能在Casper js 但是有可能吗waitForUrlChange in Casper js 我的意思是检测到变化this getCurrentUrl 价值 我无法预测新的 url 值 它可以是任何东西 有一
  • 多个进程上的 fs.createWriteStream

    如何实现多个 Node js 进程写入同一个文件的系统fs createWriteStream 这样它们就不会覆盖数据 看起来 fs createWriteStream 的默认设置是在调用该方法时清除文件 我的目标是清除一次文件 然后让所有
  • MongoDB:聚合并展平数组字段

    在使用关系数据库 SQL Server MySQL Oracle Informix 28 年之后 我已转向 MongoDB 过去两周进展缓慢 我想提出几个问题来证实我的想法 我的文档如下所示 忽略此问题的分组 id xyz 800 site
  • emberjs 1.0.0pre4 如何将上下文对象传递给资源“...Index”路由?

    在一个简单的 ember 应用程序中 我有一个带有索引模板的资源 详细信息 在应用程序索引模板中 我有一个调用的按钮transitionTo detail obj 在索引控制器上 其中obj是被单击的内容项 这通过obj as the mo
  • ruby 中的反引号和单引号错误消息 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 为什么 ruby 在错误消息中使用反引号和单引号 bad method NameError undefined local variable o
  • Android获取外部存储绝对路径

    我想下载一些文件并将它们保存到手机 平板电脑的内部存储中 已在 Samsung Galaxy Note 2 和 Galaxt Tab 10 1 上试用 当我使用 storage sdcard0 在他们身上 代码运行成功 但是当我使用Gala
  • Require.js 忽略 baseUrl

    好吧 这让我发疯 所以也许有人可以指出我正确的方向 我使用最新的 require js 和 jquery 作为我的模块加载器 我正在使用data main属性指向一个配置文件baseUrl 当我尝试加载模块时baseUrl被忽略 并且 re
  • Flash:距 MovieClip 最近的点

    我需要限制一个点内DisplayObject艺术家给我的 我让它工作 但仅适用于光标仍在内部的情况bounds 有限对象称为limited function onSqMouseMove event MouseEvent if bounds
  • 在画布中移动按钮

    当鼠标悬停在 UIElement 上并且用户按下 Ctrl 键时 以下代码应该在画布中移动 UIElement void keydown Object sender KeyEventArgs e if e Key Key LeftCtrl
  • 如何运行本地 Windows 应用程序并将输出通过管道传输到浏览器

    我有 Windows 应用程序 EXE 文件是用 C 编写并使用 MS Visual Studio 构建的 它将 ASCII 文本输出到标准输出 我希望增强 ASCII 文本以包含有限的 HTML 和一些链接 我想调用此应用程序 EXE 文
  • 将向量列表转换为计数数据帧[重复]

    这个问题在这里已经有答案了 我有一个存储在如下列表中的字符向量列表 basket1 lt c Apple Orange Banana Apple Apple Grape basket2 lt c Grape Grape Grape Grap