在对应阈值表中使用case_when和之间

Benson_YoureFired

早上好,

我有2个数据帧:(25000,66)和一个阈值表(10,2),其中包含10个组以及每个组的最后一个ID。

在大型数据集中,我有一个名为的变量id只是id = row_number()

id
1
2
3
4
5
...
25000

编辑:很多答案,谢谢你的所有想法。阅读时,我意识到我忘记了数据描述中的重要一步,对此我深表歉意。

我正在对原始样本进行合成抽样bigdataset以产生新的观点。因此,在采样后,id列看起来像这样:

id
1
2
2.1
3
3.8
4.74
5.12
6
...
25000

这就是为什么我将ween子句与一起使用last_id来将ID重新分配给他们的组的原因。

阈值表:

last_id   group_name
50        grp1
1500      grp2
8900      grp3
...
25000     grp10

我想将新列添加到大数据集中,以便具有id和组名,仅基于id处于阈值表指定的组范围内的条件。

现在我写了这个:

df <- df %>%
    dplyr::mutate(group_name = case_when(id < last_id[1,1] ~ last_id[1,2],
                                                between(id, last_id[1,1], last_id[2,1]) ~ last_id[2,2],
                                                between(id, last_id[2,1], last_id[3,1]) ~ last_id[3,2],
                                                between(id, last_id[3,1], last_id[4,1]) ~ last_id[4,2],
                                                between(id, last_id[4,1], last_id[5,1]) ~ last_id[5,2],
                                                between(id, last_id[5,1], last_id[6,1]) ~ last_id[6,2],
                                                between(id, last_id[6,1], last_id[7,1]) ~ last_id[7,2],
                                                between(id, last_id[7,1], last_id[8,1]) ~ last_id[8,2],
                                                between(id, last_id[8,1], last_id[9,1]) ~ last_id[9,2],
                                                id > last_id[9,1] ~ last_id[10,2]))
    )

但这不起作用,我得到这个错误:

FUN中的错误(左,右):类型列表和原子类型只能进行比较(5)

而且这段代码看起来很糟糕,必须有另一种使用Apply或其他dplyr函数的方法吗?

感谢您的阅读。

奥托·卡西(OttoKässi)

cut 在基数R中可以相对容易地做到这一点:

bigdataset <- data.frame(seq(1, 25000,1))
names(bigdataset) <- 'id'
thresholds <- data.frame(
                       c(50, 1500, 8900, 10000, 12000, 13000, 14000, 15000, 16000, 25000), 
                       c('grp1','grp2','grp3','grp4', 'grp5','grp6', 'grp7','grp8','grp9','grp10'))
names(thresholds) <- c('last_id','group_name')

cut(bigdataset$id, breaks=breaks=c(min(bigdataset$id),thresholds$last_id + 1), labels=thresholds$group_name[1:10], right=FALSE) -> bigdataset$group_name

输出:

> bigdataset
         id group_name
1         1       grp1
2         2       grp1
3         3       grp1
4         4       grp1
5         5       grp1
6         6       grp1
7         7       grp1
8         8       grp1
9         9       grp1
10       10       grp1
11       11       grp1
12       12       grp1
13       13       grp1
14       14       grp1
15       15       grp1
16       16       grp1
17       17       grp1
18       18       grp1
19       19       grp1
20       20       grp1
21       21       grp1
22       22       grp1
23       23       grp1
24       24       grp1
25       25       grp1
26       26       grp1
27       27       grp1
28       28       grp1
29       29       grp1
30       30       grp1
31       31       grp1
32       32       grp1
33       33       grp1
34       34       grp1
35       35       grp1
36       36       grp1
37       37       grp1
38       38       grp1
39       39       grp1
40       40       grp1
41       41       grp1
42       42       grp1
43       43       grp1
44       44       grp1
45       45       grp1
46       46       grp1
47       47       grp1
48       48       grp1
49       49       grp1
50       50       grp2
51       51       grp2
52       52       grp2
53       53       grp2
54       54       grp2
55       55       grp2
56       56       grp2
57       57       grp2
58       58       grp2
59       59       grp2
60       60       grp2

请注意,您需要使用min(bigdataset$id); 这样一来,您就有10个课程的11个切入点。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 dplyr::case_when 中使用 NSE

来自分类Dev

循环使用mutate和case_when

来自分类Dev

在R中使用mutate,case_when,any()和all()函数使用Group by

来自分类Dev

在 R 中的 dplyr 中使用带有 mutate 和 case_when 的 shift:未按预期工作

来自分类Dev

在dplyr中使用case_when时遇到问题

来自分类Dev

在case_when()的LHS中使用值的位置出现

来自分类Dev

在Dplyr中使用case_when难以创建新列

来自分类Dev

如何在 dplyr mutate() 函数中使用 case_when ?

来自分类Dev

R case_when和%in%

来自分类Dev

用户定义的函数使用mutate和case_when

来自分类Dev

R:使用“ for”循环和“ case_when”检查多个变量。

来自分类Dev

突变,跨越和case_when

来自分类Dev

在case_when中使用map2替换字符串

来自分类Dev

如何在case_when中使用字符串检测?

来自分类Dev

在分组的行中使用case_when()并选择何时显示项目-tidyverse / R解决方案

来自分类Dev

在case_when中如何使用tidydots?

来自分类Dev

mutate_all在r中的列表上使用map和case_when / ifelse

来自分类Dev

使用group_by和case_when为每个组产生单个值

来自分类Dev

使用mutate_at和case_when将变量名称分配为值

来自分类Dev

使用any和all作为对case_when中多个元素的逻辑测试?

来自分类Dev

使用R中的mutate和case_when()语句将unite()填充为整列

来自分类Dev

R dplyr与mutate()和case_when()有效地使用cross()

来自分类Dev

使用 mutate 和 case_when 时从现有列插入值

来自分类Dev

使用 case_when 和 startsWith 有选择地逐行变异

来自分类Dev

mutate和case_when:错误的数字和不适用

来自分类Dev

在dplyr :: mutate()上下文中在dplyr :: case_when()中使用复杂的RHS表达式

来自分类Dev

在mutate_at()中使用case_when()用NA重新编码具有不同类型的所选列的行

来自分类Dev

一种通过使用查找表而不是case_when替换R中100个唯一值的方法?

来自分类Dev

预测中使用的阈值

Related 相关文章

  1. 1

    在 dplyr::case_when 中使用 NSE

  2. 2

    循环使用mutate和case_when

  3. 3

    在R中使用mutate,case_when,any()和all()函数使用Group by

  4. 4

    在 R 中的 dplyr 中使用带有 mutate 和 case_when 的 shift:未按预期工作

  5. 5

    在dplyr中使用case_when时遇到问题

  6. 6

    在case_when()的LHS中使用值的位置出现

  7. 7

    在Dplyr中使用case_when难以创建新列

  8. 8

    如何在 dplyr mutate() 函数中使用 case_when ?

  9. 9

    R case_when和%in%

  10. 10

    用户定义的函数使用mutate和case_when

  11. 11

    R:使用“ for”循环和“ case_when”检查多个变量。

  12. 12

    突变,跨越和case_when

  13. 13

    在case_when中使用map2替换字符串

  14. 14

    如何在case_when中使用字符串检测?

  15. 15

    在分组的行中使用case_when()并选择何时显示项目-tidyverse / R解决方案

  16. 16

    在case_when中如何使用tidydots?

  17. 17

    mutate_all在r中的列表上使用map和case_when / ifelse

  18. 18

    使用group_by和case_when为每个组产生单个值

  19. 19

    使用mutate_at和case_when将变量名称分配为值

  20. 20

    使用any和all作为对case_when中多个元素的逻辑测试?

  21. 21

    使用R中的mutate和case_when()语句将unite()填充为整列

  22. 22

    R dplyr与mutate()和case_when()有效地使用cross()

  23. 23

    使用 mutate 和 case_when 时从现有列插入值

  24. 24

    使用 case_when 和 startsWith 有选择地逐行变异

  25. 25

    mutate和case_when:错误的数字和不适用

  26. 26

    在dplyr :: mutate()上下文中在dplyr :: case_when()中使用复杂的RHS表达式

  27. 27

    在mutate_at()中使用case_when()用NA重新编码具有不同类型的所选列的行

  28. 28

    一种通过使用查找表而不是case_when替换R中100个唯一值的方法?

  29. 29

    预测中使用的阈值

热门标签

归档