在数据框中的因子级别上应用自定义函数

Elcortegano

我正在尝试应用基于整洁的方法,或者至少是一种整洁的解决方案,以将自定义函数应用于数据帧中某个因子的级别。

考虑以下测试数据集:

df <- tibble(LINE=rep(c(1,2),each=6), FOUND=c(1,1,1,0,1,1,0,0,1,0,0,1))

#    LINE FOUND
#   <dbl> <dbl>
# 1     1     1
# 2     1     1
# 3     1     1
# 4     1     0
# 5     1     1
# 6     1     1
# 7     2     0
# 8     2     0
# 9     2     1
#10     2     0
#11     2     0
#12     2     1

我想知道例如按LINE因子级别找到的结果的比例(例如FOUND == 1)。现在,我正在使用以下代码,但是我实际上是在尝试更清洁的方法。

# This is the function to calculate the proportion "found"
get_prop <- function (data) {
  tot <- data %>% nrow()
  found <- data %>% dplyr::filter(FOUND==1) %>% nrow
  found / tot
}

# This is the code to generate the expected result
lines <- df$LINE %>% unique %>% sort
v_line <- vector()
v_prop <- vector()
for (i in 1:length(lines)) {
  tot <- df %>% dplyr::filter(LINE==lines[i])
  v_line[i] <- lines[i]
  v_prop[i] <- get_prop(tot)
}
df_line = data.frame(LINE = v_line, CALL = v_prop)

我希望下面的方法能起作用,但是不能,因为它返回每个级别的结果,但是数值解决方案是整个数据集的,而不是特定于级别的:

df %>% dplyr::group_by(LINE) %>% dplyr::summarise(get_prop(.))

编辑:请注意,我正在寻找的是一种在数据框中的因子水平上应用自定义函数的解决方案如所示示例中,不一定是特定值的出现次数或比例。

编辑2:也就是说,我正在寻找一种利用上述get_prop功能的解决方案这不是因为它是解决此特定问题的最佳方法,而是因为它具有更广泛的通用性

JB格鲁伯

如果要逐组应用自定义功能,则可以使用该group_split命令。这会将您的数据框拆分为一个列表元素。每个列表元素都是df的子集。然后,您可以map用来将函数应用于每个级别(请注意,您可以group_split并且map一步一步使用group_map)。我添加了最后一行以获得原始方法的形式。

df %>% 
  group_by(LINE) %>% 
  group_split() %>% 
  map_dbl(get_prop) %>% 
  tibble(LINE = seq_along(.), CALL = .) # optional to get back to a df
#> # A tibble: 2 x 2
#>    LINE  CALL
#>   <int> <dbl>
#> 1     1 0.833
#> 2     2 0.333

reprex软件包(v0.3.0)创建于2020-01-20

现在,我担心此解决方案的一件事是group_split删除分组变量(如果将其保留为列表或属性的名称,我会更喜欢)。因此,如果您希望小标题作为结果,则可以事先保存分组变量:

groups <- unique(df$LINE)

df %>% 
  group_by(LINE) %>% 
  group_split() %>% 
  map_dbl(get_prop) %>% 
  tibble(group = groups, result = .)

更新

我认为总体上最干净的方法是这样(使用更一般的示例):

library(tidyverse)
df <- tibble(LINE=rep(c("a", "b"),each=6), FOUND=c(1,1,1,0,1,1,0,0,1,0,0,1))

lvls <- unique(df$LINE)

df %>% 
  group_by(LINE) %>% 
  group_map(~ get_prop(.x)) %>% 
  setNames(lvls) %>% 
  unlist() %>% 
  enframe()
#> # A tibble: 2 x 2
#>   name  value
#>   <chr> <dbl>
#> 1 a     0.833
#> 2 b     0.333

reprex软件包(v0.3.0)创建于2020-01-20

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

R:在数据框中定义因子的级别

来自分类Dev

在熊猫中使用自定义聚合函数在数据框中创建新列

来自分类Dev

在数据框中重新排序因子名称的级别

来自分类Dev

将自定义函数应用于数据框

来自分类Dev

如何编写自定义函数以显示数据框中每个变量的值计数以及级别?

来自分类Dev

在数据集中应用内置和自定义创建的函数

来自分类Dev

在数据框中查找和替换自定义值

来自分类Dev

在R中自定义数据框

来自分类Dev

如何将因子级别设置为它们在数据框中显示的顺序?

来自分类Dev

将自定义累积函数应用于熊猫数据框

来自分类Dev

如何将自定义函数应用于熊猫数据框的2列?

来自分类Dev

数据框列中的组合因子级别

来自分类Dev

在Pandas数据框中的多索引级别上排序

来自分类Dev

熊猫GroupBy通过自定义函数中的两个数据框进行定义

来自分类Dev

在数据框的每一行上调用自定义函数,每行具有多个参数

来自分类Dev

将自定义函数应用于数据框的每个子集并生成一个数据框

来自分类Dev

将自定义函数应用于数据框的每个子集并生成一个数据框

来自分类Dev

如果文本框为空但数据仍要记录在数据库中,则进行自定义验证

来自分类Dev

自定义列不在数据库中

来自分类Dev

在熊猫数据框中分组并应用自定义功能

来自分类Dev

用于获取数据框值位置的自定义函数

来自分类Dev

如何从R中的自定义函数向数据框添加多列

来自分类Dev

自定义函数以过滤pandas数据框列中的值

来自分类Dev

列的函数继承R中的数据框的自定义类

来自分类Dev

如何在数据框中的每行应用XTS函数

来自分类Dev

如何在数据框中的每行应用XTS函数

来自分类Dev

在数据框的列中应用函数 [Python]

来自分类Dev

在R中的数据帧列表上应用自定义函数

来自分类Dev

如何避免创建自定义异常类,同时仍在适当的抽象级别上引发异常?

Related 相关文章

  1. 1

    R:在数据框中定义因子的级别

  2. 2

    在熊猫中使用自定义聚合函数在数据框中创建新列

  3. 3

    在数据框中重新排序因子名称的级别

  4. 4

    将自定义函数应用于数据框

  5. 5

    如何编写自定义函数以显示数据框中每个变量的值计数以及级别?

  6. 6

    在数据集中应用内置和自定义创建的函数

  7. 7

    在数据框中查找和替换自定义值

  8. 8

    在R中自定义数据框

  9. 9

    如何将因子级别设置为它们在数据框中显示的顺序?

  10. 10

    将自定义累积函数应用于熊猫数据框

  11. 11

    如何将自定义函数应用于熊猫数据框的2列?

  12. 12

    数据框列中的组合因子级别

  13. 13

    在Pandas数据框中的多索引级别上排序

  14. 14

    熊猫GroupBy通过自定义函数中的两个数据框进行定义

  15. 15

    在数据框的每一行上调用自定义函数,每行具有多个参数

  16. 16

    将自定义函数应用于数据框的每个子集并生成一个数据框

  17. 17

    将自定义函数应用于数据框的每个子集并生成一个数据框

  18. 18

    如果文本框为空但数据仍要记录在数据库中,则进行自定义验证

  19. 19

    自定义列不在数据库中

  20. 20

    在熊猫数据框中分组并应用自定义功能

  21. 21

    用于获取数据框值位置的自定义函数

  22. 22

    如何从R中的自定义函数向数据框添加多列

  23. 23

    自定义函数以过滤pandas数据框列中的值

  24. 24

    列的函数继承R中的数据框的自定义类

  25. 25

    如何在数据框中的每行应用XTS函数

  26. 26

    如何在数据框中的每行应用XTS函数

  27. 27

    在数据框的列中应用函数 [Python]

  28. 28

    在R中的数据帧列表上应用自定义函数

  29. 29

    如何避免创建自定义异常类,同时仍在适当的抽象级别上引发异常?

热门标签

归档