问题标签 [forcats]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - 结合不同因子水平下的数据,同时保留原始水平
我想为以下问题提供一个 tidyverse 解决方案。在我的数据集中,我有各种因素水平的数据。我想创建一个新的因子水平“总计”,它是 X 的现有因子水平上所有 Y 值的总和。这可以通过以下方式完成,例如:
但是,这也必然会覆盖原始因子水平。我必须在一个额外的步骤中将原始数据集与新折叠的数据集结合起来。
我过去用来保留原始级别的一种解决方案是将数据以宽格式引入并继续rowwise()
并mutate()
使用“Total”创建一个新变量,然后重新调整为 long。
但是,我对这个解决方案非常不满意,因为使用rowwise()
不被认为是好的做法。如果您能指出一个可用的替代解决方案如何在保留原始水平的同时组合不同因子水平下的数据,那就太好了。
最小的可重现示例:
预期结果:
r - 为分组条形图重新排序图例和条形图
使用 Rmarkdown 打印输出到 PDF。
我已经创建了一个宏函数,但是在更正分组条形图的图例顺序时遇到了麻烦。
创建的数据表有 4 列。1- 位置:(西班牙、葡萄牙、乌克兰) 2- 协议级别:(非常同意、同意、不同意、非常不同意、缺失) 3- 对应于协议级别(1、2、3、4 和 0)的 ID 级别用于缺失)4-计数值
我想创建一个分组条形图(按位置分组)并绘制每个协议级别的计数值。
笔记!!由于这是一个宏观功能,因此协议级别有时会更改为满意度级别(非常不满意、不满意、满意、非常满意)。这就是我包含 id 数字级别的原因。
我的问题是我无法按顺序排列我的图例/分组条形图。
我可以使用 ID 级别进行排序,但是我的图例只显示无用的数字。我需要图例来显示数字代表什么(1 = 强烈同意,2 = 同意分机)
有没有办法按 id (0,1,2,3,4) 对我的级别进行排序但显示它们的值?
我已经尝试过 forcats、reorder、factor/levels、groupby ......但似乎仍然没有得到正确的输出
附件是我当前输出的一些图像,但如图所示,我仍然需要更正级别/图例顺序。
r - 堆积柱形图出现而不是使用ggplot闪避
我正在尝试创建一个柱形图,其中有一个变量“Hall”代表他们几个月的总数。我对代码有一些帮助,但我运行了它,它将所有大厅作为堆叠柱形图放在彼此之上,而不是躲避。有任何想法吗?
这是我尝试过的。
我希望它每个月看起来像 2 个大厅,而不是堆叠。我觉得这一定是一个小错误。
r - ggplot2 boxplots - 如何在 x 轴上对因子水平进行分组(并为每个组均值添加参考线)
lwp_md
我有 30 种植物,我使用箱线图和软件包展示了正午叶片水势 () 的分布ggplot2
。但是我如何根据它们的叶片习性(例如 )沿 x 轴对这些物种进行分组Deciduous
,Evergreen
并显示一条指示lwp_md
每个叶片习性水平平均值的参考线?
我已经尝试过这个包forcats
,但真的不知道如何继续这个包。在网上广泛搜索后,我找不到任何东西。我似乎能做的最好的事情是通过其他一些功能(例如中位数)对物种进行排序。
下面是我到目前为止的代码示例。注意我已经使用了这些包ggplot2
和ggthemes
:
这是我的数据的一个子集,包括我的 4 个物种(2 个落叶树,2 个常绿树):
r - dplyr::case_when 对不应评估的案例的 RHS 发出警告
我有tibble
一个列是一个有序因子,其中包含分解的时间序列的组件的名称;我想更改这些,因为它们不容易理解(在我看来,“级别”不像“趋势”那样清晰,而且“每周”和“每年”比“季节 1”和“季节 2”更好)。
有时我得到“season1”和“season2”,但有时只是“season”。我正在使用dplyr::mutate
,dplyr::case_when
和forcats::fct_recode
. 在case_when
语句的第一个选项匹配的情况下,我希望它不会关注其他任何选项。
但是,在我测试给定级别然后更改同一级别的名称的情况下,它会发出警告
“警告:未知级别
f
”
关于在下一个案例中改变的水平。我知道这只是一个警告,输出是正确的,但这让我很烦,我想知道我做错了什么。
我正在使用dplyr 0.8.0.1
和forcats 0.4.0
。R 3.4.4
预期结果:b 的级别为“foo”、“d”和“e”,没有任何抱怨。
实际结果:级别正确,但“## 警告:未知级别f
:a”
r - 如何使用 fct_relevel 和 mutate_at 语法
我想重新调整数据集中的因素,但是我真的很努力使用 fct_relevel 语法并将其与 mutate_at 一起使用。我收到一系列关于我的数据不是一个因素的错误。
解决方案必须允许我重新调整多个因素(实际数据集有 20 多个因素需要以不同方式重新调整)
这个答案似乎应该有效,但我显然没有正确掌握语法。我哪里错了?
这是一个例子:
我肯定在处理因素
但我无法重新调平 x1,我收到以下错误:f must be a factor (or character vector))
这就是我理想中希望能够做到的
目前,最后一组给了我以下错误:
错误:无法创建对不可调用对象的调用
调用rlang::last_error()
查看回溯
另外:警告信息:
f中的未知水平:b,a
如果有人指出我确信这是一个明显的错误,我将非常感激。
r - 如果条件,用 NA 替换因子值
我想根据另一列替换因子变量中的值,同时不更改初始因子水平。
例子:
当Payee
为'0'时,则对应的PayeeID_Hash
值不应该存在(即应该是NA
)。请注意,我不想删除因子级别0x31BCA02
(它将出现在Payee
具有 level的其他行中x
)。另外,我想保持PayeeID_Hash
水平不变(我不想用其他值替换它们)。
预期输出:
我可以通过将因子转换为字符然后返回因子来做到这一点:
是否有另一种更清洁(即更直接)的方法来做到这一点?
r - 根据另一个因素对 facet_wrap/facet_grid 中的面板重新排序,出现多次
考虑这个例子。我想通过将两列连接成一个字符串来为我的面板创建一个自定义标签。
通过 faceting 创建的面板按字母顺序排列,但实际上,我希望它们按 排序src
,所以 SRC01 应该先出现,然后是 SRC02,依此类推。
由reprex 包(v0.3.0)于 2019-05-22 创建
我知道这个顺序取决于潜在因素水平的顺序,但是这个问题显示了如何手动指定我不想要的水平(还有更多的SRC
值,我不想输入所有这些......)。
我找到了一个解决方案fct_reorder
,我可以在其中指定:
但这仅在每个src/label
组合有一行时才有效。如果我添加数据(即,每个组合不止一个数据点),它会失败并显示:
实现我需要的最简洁的方法是什么?