R:使用DPLYR计算分位数?

xoshrz7s  于 2023-01-10  发布在  其他
关注(0)|答案(1)|浏览(178)

我正在使用R编程语言。
我有以下数据集:

set.seed(123)
library(dplyr)

var1 = rnorm(10000, 100,100)
var2 = rnorm(10000, 100,100)
var3 = rnorm(10000, 100,100)
var4 = rnorm(10000, 100,100)
var5 <- factor(sample(c("Yes", "No"), 1000, replace=TRUE, prob=c(0.4, 0.6)))
var6 <- factor(sample(c("Yes", "No"), 1000, replace=TRUE, prob=c(0.4, 0.6)))

my_data = data.frame( var1, var2, var3, var4, var5, var6)

我正在尝试运行以下代码:

my_data %>%
    group_by(var5) %>%
    mutate(col1 = ntile(var1, 5))
    • 此代码适用于此示例数据集,但适用于我的真实数据集-我总是得到以下错误:**
Error: Column 'col1' must be length xyz (the group size) or one, not abc

我可以使用什么样的策略来避免这种错误?
谢谢!

rdrgkggo

rdrgkggo1#

我建议使用purrr::安全地构造一个在遇到错误时不会停止/退出的ntile版本,使其输出一些独特的内容(-Inf)尝试并确定错误发生的位置和原因。

safe_ntile <- purrr::safely(function(x)ntile(x,5),
                            otherwise = -Inf,
                            quiet = TRUE)

my_data %>%
  group_by(var5) %>%
  mutate(res = safe_ntile(var1)$result)

假设您有许多组,而不是像示例中那样只有2个组,因此很难确定问题,那么建议的方法至少可以让您找到感兴趣的组。

相关问题