【发布时间】:2021-05-24 19:13:22
【问题描述】:
我正在就我创建的这个函数寻求帮助。该函数的目的:首先,我想从数据框中提取一列,并按降序排列。然后,我按“H”、“M”和“L”对每个元素进行排名。我想对它们进行排名,例如前 33% 的项目应该有标签“H”,最后 33% 的项目应该被标记为“L”。其余的应标记为“M”。
这是代码:
ranking_prod <- function(data, column) {
data <- arrange(data, desc(column))
size <- length(data$column)
first_third <- data$column[round(size / 3)]
last_third <- data$column[round(size - (size / 3))]
case_when(data$column > first_third ~ "H",
data$column < last_third ~ "L",
TRUE ~ "M")
}
但是,当我将此函数应用于以下数据框时:
> one <- c("a", "b", "c", "d", "e")
> two <- c(1, 2, 2, 1, 5)
> three <- c(2, 2, 2, 4, 5)
> dataframe <- data.frame(one, two, three)
返回:
> rank_volume(dataframe, two)
character(0)
代码中的错误在哪里?为什么显示字符(0)作为结果?
【问题讨论】:
标签: r