r - 将具有字符向量作为列的数据帧转换为长格式
问题描述
我希望有人可以帮助我解决我在 DataCamp“使用 Shiny in R 构建 Web 应用程序”课程的练习中遇到的问题,特别是转换他们在练习中使用的数据集之一。
我已经使用 readRDS 函数导入了他们的数据集(RDS),它看起来像这样:
$ id : int 10259 25693 20130 22213 13162 6602 42779 3735 16903 12734 ...
$ cuisine : chr "greek" "southern_us" "filipino" "indian" ...
$ ingredients:List of 39774
..$ : chr "romaine lettuce" "black olives" "grape tomatoes" "garlic" ...
..$ : chr "plain flour" "ground pepper" "salt" "tomatoes" ...
..$ : chr "eggs" "pepper" "salt" "mayonaise" ...
..$ : chr "water" "vegetable oil" "wheat" "salt"
..$ : chr "black pepper" "shallots" "cornflour" "cayenne pepper" ...
..$ : chr "plain flour" "sugar" "butter" "eggs" ...
..$ : chr "olive oil" "salt" "medium shrimp" "pepper" ...
..$ : chr "sugar" "pistachio nuts" "white almond bark" "flour" ...
..$ : chr "olive oil" "purple onion" "fresh pineapple" "pork" ...
..$ : chr "chopped tomatoes" "fresh basil" "garlic" "extra-virgin olive oil" ...
在他们的教程中,他们有一个数据集,该数据集已经过转换,因此有三列,id、美食和成分,但成分只有一种成分(意味着同一个 id 有多行)。
通常当我必须做这样的事情时,我使用 dplyr 函数“收集”,但这在这种情况下不起作用,因为它用于收集多个列,而不是吐出包含不同长度字符向量的列。我也尝试使用单独的()函数,但这需要您指定要将向量分成哪些列,我不能这样做,因为它们的长度都不同。
如果有人可以告诉我如何将上述数据框转换为长格式,我将不胜感激。
非常感谢!
解决方案
听起来您正在寻找spread
:https ://tidyr.tidyverse.org/reference/spread.html 。这有效地与gather
.
还应该提到gather
并且spread
不再更新,已被他们可以说是更明确的对应物所取代pivot_longer
:pivot_wider
https: //tidyr.tidyverse.org/reference/pivot_longer.html和https://tidyr.tidyverse.org/reference /pivot_wider.html。然而,Datacamp 可能没有更新他们的课程以反映这一点。
推荐阅读
- python-3.x - 如何标准化元组中的分布?
- android - 以编程方式打开另一个应用程序然后关闭它会导致主应用程序冻结
- mysql - 显示 id 并计算相同的外键
- reactjs - 我的 React 网站中的 React 可加载问题
- unit-testing - 单元测试在 xunit.runner.console 中失败,但在本地通过
- odoo - “group_by_no_leaf”有什么用?
- html - 为什么基于绝对父级而不是直接相对父级应用对象边距
- python - 从用户那里获取输入并在文本文件中搜索并返回该点在文本文件中的位置
- python - 在分区列表问题上超过时间限制
- c# - 无法从 QnAMaker 获取某些输入的响应