问题标签 [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 - 总结到最大的类别
我有时会遇到一个问题。我想折叠我的数据框,并且一列应该返回组中最大的类别,即使每个类别有多个观察值。例子:
预期输出:
请注意,对于第 2 组,我希望返回 cat D,因为 D 的 val 总和大于 cat C 的总和。
这有效:
但我想在没有双重总结的情况下做到这一点:
也许有一个forcats解决方案或什么的?
谢谢!:)
r - 在 Jupiter 笔记本中使用 Tidyverse 包中的“新”函数时出现问题
我在 Jupiter notebook 中使用一些特定的 R 函数时遇到了一些问题。在我尝试使用“新”函数之前,我所有的 R 代码都运行良好,例如 pivot_longer()(来自 tidyr 包)和 fct_lump_min(来自 forcats 包)。这是我得到的错误:
pivot_longer(., everything(), names_to = "variables", values_to = "num_levels") 中的错误:找不到函数 "pivot_longer" Traceback:
- ramen_data_factor %>% summarise_all(nlevels) %>% pivot_longer(everything(), .names_to = "variables", values_to = "num_levels")
- withVisible(eval(quote(
_fseq
(_lhs
)), env, env)) - 评估(报价(
_fseq
(_lhs
)),环境,环境) - 评估(报价(
_fseq
(_lhs
)),环境,环境) _fseq
(_lhs
)- 减少(值,
_function_list
) - withVisible(function_list[k])
- 函数列表[k]
但是,它们的“旧”对应函数,例如gather() 和fct_lump() 可以正常工作!此外,这些 Tidyverse 包中的所有其他功能都可以正常工作(实际上所有库都已正确加载)。由于这是课程的材料,我真的很想使用新功能而不是弃用的功能。每个人都会发生这种情况,还是我应该对我的 Anaconda 发行版设置进行一些调整?
非常感谢!
r - 同时修剪多个变量的因子标签
这是我的玩具数据集:
我想修剪很长的因子标签,它们都有两个共同点:
- 都以True或False开头
- 包括列名(即每列的因子标签是唯一的)
我想简化这一点,并且每个因子列只有True和False 之类的东西。这是我想要的输出:
我认为它应该与类似mutate_at
andfct_relabel
和可能的东西一起使用str_trunc
,但我无法弄清楚。
r - 一口气将许多变异变量分解
如果我已经重新编码了 20 个变量,为什么我不能将 mutate() 传递到 as_factor() 中?我没有收到错误,但它只是不做任何调平。
我可以一件一件
df$Ethnicity %<>% as_factor()
但我不能这样做:
我也尝试过 as_factor(.) ,但无济于事。我真的必须手动包装每个 case_when infactor()
吗?我有二十个变量,我想避免需要将每个变量写入 purr:: 函数或重复 wrapping factor() 二十次的解决方案。
r - 根据数据子集的汇总统计重新排序因子
我正在尝试从我的数据框的子集中重新排序一个因子,该因子由另一个使用forcats::fct_reorder()
.
考虑以下数据框df
:
我想使用ggridges
包绘制多面组密度。例如:
我现在想按每个方面上密度值的fct1
中位数(默认为)排序,即 where 。因此,此示例中的目标是分面以 B - C - A 的顺序出现。这似乎与此处的问题非常相似,不同之处在于我不想先汇总数据,因为我需要原始数据绘制密度。fct_reorder()
fct2 == "k"
我试图在链接问题的答案中调整代码:
但它返回以下错误:
forcats::fct_reorder(fct1, filter(., fct2 == "k") %>% pull(val)) 中的错误:
长度(f)==长度(.x)不正确
很明显,它们的长度不同,但我不太明白为什么这个错误是必要的。我的猜测是,通常不能保证fct1
子集中存在所有级别的 ,这肯定是有问题的。但是,在我的示例中并非如此。有没有办法解决这个错误,或者我做错了什么?
我知道我可以用几行额外的代码来解决这个问题,例如,创建子集数据的辅助变量,重新排序,然后将级别顺序作为我在原始数据集中的因素。我仍然想要一个更漂亮的解决方案,因为我经常面临同样的任务。
r - 重命名因子变量的所有级别,有没有一种tidyverse方法呢?
我偶尔需要重命名因子变量的所有级别。我知道如何使用 R 基础来实现这一点,例如:levels(factor_variable) <- levels(new_variable)
. 但我真的很想有一种方法来使用tidyverse
. 我看着,dplyr
但forcats
我没有找到任何解决它的方法。我希望能够做我在示例 1 中实现的目标,但与%>%
操作员一起工作。
示例 1,具有 R 基础(有效)
示例 2,我尝试过但不适用于 tidyverse 的一件事
我也尝试重新编码,但它不仅是手动的(一次每个值),而且它也不接受%>%
操作员。这是我试图看看发生了什么的一些事情:
r - fct_collapse 的否定级别
我有一个更小的不应该折叠的级别列表(“阿尔伯塔省”、“不列颠哥伦比亚省”、“安大略省”、“魁北克省”),而不是应该(所有其他)。我无法否定 fct_collapse 的级别(作为目标示例的代码)(除以下之外的所有级别)。有什么建议么?
df$`Province group` %<>% fct_collapse(df$Province, `Smaller provinces` = !c("Alberta", "British Columbia", "Ontario", "Quebec"))
r - 带有 dplyr 的管道后无法识别的变量
我正在使用gapminder
数据集制作带有plotly
库的交互式条形图。我想使用forcats
库重新排序大陆变量中的级别,但是当我将它放在管道之后时它无法识别这个变量。这是我正在使用的脚本:
我想知道为什么变量“大陆”不通过管道。谢谢。
r - fct_relevel piping Unknown levels in `f` all of the sudden
I've used this successfully, but on a different dataset I'm getting an error of unknown levels in `f`, even though they are basically the same. What is going on? This one works:
This one will recode but not relevel, throwing the error. I added as.numeric because this variable is as.character in that dataset. That's the only difference.
If I run mutate and fct_relevel separately, it will relevel the way it's supposed to. I've tried %>% fct_relevel("Low", "Medium", "High"))
, %>% fct_relevel(., "Low", "Medium", "High"))
, and %>% fct_relevel("High", after = Inf))
without any difference out outcome.