r语言 - 在函数中使用dplyr slice_min来获取与列最小值相关的行



我试图创建一个函数,该函数返回特定条件下死亡率最低的医院。函数的输入是状态和条件。我还应该指出我是r的新手,我非常喜欢dplyr包中的函数,但似乎在使用slice_min函数并将变量传递给它时遇到了一些问题。如果有人能建议什么是错的,如何纠正它,将不胜感激。我将在下面展示我尝试过的两个似乎不起作用的选项。

函数调用的例子如下:

best_hospital("CA","HeartFailure")

函数

best_hospital <- function(state, disease_type){
library(dplyr)
library(janitor)
#Loads data
data_path <- c('D:/Data Science/CourseraR/Assign3 Info/outcome-of-care-measures.csv')
data_df <- read.csv(data_path, colClasses = "character")
#Replaces capitals, spaces and special characters in names
data_df <- data_df %>% 
clean_names() %>%
select(state,hospital_name,
hospital_30_day_death_mortality_rates_from_heart_attack,
hospital_30_day_death_mortality_rates_from_heart_failure,
hospital_30_day_death_mortality_rates_from_pneumonia)
colnames(data_df) <- c("State", "HospitalName","HeartAttack", "HeartFailure", "Pneumonia")

data_df <- data_df %>%
filter(State == {{state}} ) %>%
select(State, HospitalName, {{disease_type}} ) 

# This DOES NOT work   
# data_df <- data_df %>% slice_min(order_by = {{disease_type}}, with_ties = TRUE)

#This DOES NOT work
data_df <- data_df %>% slice_min(order_by = HeartFailure, with_ties = TRUE)

print(head(data_df))

}

我上面展示的两个方法都选择并返回数据。但是它不与感兴趣的列(在本例中为Heart Failure)的最小值相关联。欢迎任何帮助!由于

尝试如下:

library(dplyr)
library(janitor)
best_hospital <- function(data_df, state, disease_type){

data_df <- data_df %>%
filter(State == state) %>%
select(State, HospitalName, disease_type) 

data_df <- data_df %>% 
slice_min(order_by = .data[[disease_type]], with_ties = TRUE)

return(data_df)
}

#Loads data
data_path <- c('D:/Data Science/CourseraR/Assign3 Info/outcome-of-care-measures.csv')
data_df <- read.csv(data_path, colClasses = "character")
#Replaces capitals, spaces and special characters in names
data_df <- data_df %>% 
clean_names() %>%
select(state,hospital_name,
hospital_30_day_death_mortality_rates_from_heart_attack,
hospital_30_day_death_mortality_rates_from_heart_failure,
hospital_30_day_death_mortality_rates_from_pneumonia)
colnames(data_df) <- c("State", "HospitalName","HeartAttack", "HeartFailure", "Pneumonia")
result <- best_hospital(data_df, "CA","HeartFailure")
result

最新更新