当前位置: 首页 > 知识库问答 >
问题:

如何总结DPLYR中一个case_when中的几个过滤突变?

鲁浩渺
2023-03-14

我想为一个变量计算一些分位数,并通过创建一个新变量来捕获分位数观察属于哪一个。我设法做到每一个步骤,并想知道如何把它们结合起来。我尝试了几个case_when版本,没有一个是有效的。如何缩短以下内容:

paneldata = data.frame(id=c(1,1,1,2,2,2,3,3,3,4,4,4), time=seq(1:3), 
                       x=c(21,22,23,24,25,26,27,28,29,30,31,32))

quants <- boxplot(paneldata$x, outline=FALSE)$stats

library(dplyr)

paneldata %>%
  filter(x <= quants[2]) %>%
  mutate(quantile = 1)

paneldata %>%
  filter(x > quants[2] & x < quants[3]) %>%
  mutate(quantile = 2)

paneldata %>%
  filter(x > quants[3] & x < quants[4]) %>%
  mutate(quantile = 3)

paneldata %>%
  filter(x >= quants[4]) %>%
  mutate(quantile = 4)

共有1个答案

姚棋
2023-03-14

您可以通过dplyr中的ntile()在一个步骤中完成所有操作。

library(dplyr)

paneldata %>%
  mutate(quantile = ntile(x, 4))

   id time  x  quantile
1   1    1 21         1
2   1    2 22         1
3   1    3 23         1
4   2    1 24         2
5   2    2 25         2
6   2    3 26         2
7   3    1 27         3
8   3    2 28         3
9   3    3 29         3
10  4    1 30         4
11  4    2 31         4
12  4    3 32         4
 类似资料:
  • 问题内容: 我有一个过滤器linkifyStuff,其中需要使用其他过滤器处理一些变量。我无法弄清楚从另一个调用一个过滤器的语法。 我了解过滤器链接-这不是我想要的。我想将过滤器应用于linkifyStuff过滤器中的局部变量,而不是其输入或输出。 我希望像下面这样工作,但是$ filter(’filtername’)显然不是正确的语法。 我可以为sanitizeStuff和sanitizeStu

  • 但是如果我有超过20个变量和非常大的行数呢。在data.table中有没有类似于。sd的东西可以让我在分组数据框架中获取所有变量的平均值?或者,是否可以在分组的数据帧上使用lapply? 谢谢你的帮助

  • 问题内容: 我已经浏览了很多有关如何过滤列表的教程,但找不到适合我的简单用例的示例。 我有几个按钮,例如 我有物体,并且像显示它 如何创建过滤器,以便每次我单击其中一个按钮时,列表都会被过滤? 我尝试添加, 并在脚本方面编写: 但这只是一个用例(如何用其他名称过滤?)-换句话说- 如何将链接连接到过滤器? 问题答案: 您可以像其他任何操作一样将过滤器绑定到范围变量。因此,您需要做的就是在用户单击并

  • 我试图在中使用来创建一个新变量,在这个变量中,我将一些值设置为missing并同时重新编码其他值。 但是,如果尝试将值设置为,则会出现一个错误,说明我们无法创建变量,因为是逻辑的: mutate_impl(.data,dots)中出错: 计算错误:类型必须是double,不是逻辑。 在数据帧的非逻辑向量中,是否有方法使用此设置值?

  • 我有数据。看起来像这样的框架 首先,我想根据Day aka group_by(Day)对数据帧进行分组。当在每个组中,每种类型(tr1,tr2)的和(平均sd)大于控制(ctrl)的差(平均sd),然后我想在新列(new.col)中指定值~是,如果不是,我想指定值~否。 例如,我希望我的数据看起来像这样。它不一定要看起来像这样

  • 问题内容: 我像电话教程一样在angularJS中使用ng- repeat和filter,但我想在页面中突出显示搜索结果。使用基本的jQuery,我只需在输入的键上解析页面,但是我试图以有角度的方式进行操作。有任何想法吗 ? 我的代码: 问题答案: 对于AngularJS v1.2 + HTML: JS: CSS: