gpt4 book ai didi

r - 列 "rate"的长度必须为 1(汇总值),而不是 22906

转载 作者:行者123 更新时间:2023-12-04 09:36:58 25 4
gpt4 key购买 nike

我在使用以下代码时遇到了一些麻烦。它返回

"Error in summarise_impl(.data, dots) : Column rate must be length 1 (a summary value), not 22906"


我的代码有问题吗? sub_grade是字符类型和 int_rate是数字
results <- loan_data %>%
select(credit_grade, sub_grade, int_rate, loan_amnt) %>%
group_by(sub_grade) %>%
summarise(
rate = substr(int_rate * 100, 1, 4),
nr_loans = n(),
"&",
percent1 = substr((nr_loans / a) * 100, 1, 5),
klj = "&",
Amount = sum(loan_amnt, na.rm = TRUE),
klj1 = "&",
percent2 = substr((Amount / total) * 100, 1, 5)
)
只有当我添加第一个变量 rate 时才会出现问题.
可重现的例子:
sub_grade <- c("A1", "A2", "A3","A1","A3")
int_rate <– c(0.023, 0.027, 0.033,0.023,0.033)
我想要的是
sub_grade.  int_rate
  • A1. 0.023
  • A2。 0.027
  • A3. 0.033
  • 最佳答案

    问题是dplyr::summarise期望/接受每组一个值。但是substr(int_rate*100, ...)在您的代码中将返回每一行的值,即每组的许多值。您需要考虑使用一些分组功能,例如 min, max, first, last etc作为 substr 的一部分.考虑到 OP 发布的示例数据,解决方案可能是:

    # Data
    sub_grade <- c("A1", "A2", "A3","A1","A3")
    int_rate <- c(0.023, 0.027,0.033,0.023,0.033)

    loan_data <- data.frame(sub_grade, int_rate, stringsAsFactors = FALSE)

    # Use dplyr to summarise on sub_grade
    library(dplyr)
    loan_data %>% group_by(sub_grade) %>%
    summarise(int_rate = first(int_rate)) %>%
    as.data.frame()

    # sub_grade int_rate
    # 1 A1 0.023
    # 2 A2 0.027
    # 3 A3 0.033

    关于r - 列 "rate"的长度必须为 1(汇总值),而不是 22906,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50781829/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com