используя данные из http://statland.org/AP/R/heartatk4R.txt
Я прочитал данные следующим образом:
heartatk4R <- read.csv(file = "C:\\Users\\"heartatk4R.txt",
header = TRUE, sep = "\t",
colClasses = c("character", "factor", "factor", "factor",
"factor", "numeric", "numeric", "numeric"))
head(heartatk4R)
Я хочу рассчитать среднюю стоимость в день для пациентов с разными кодами ДИАГНОСТИКИ. Ограничить женщинами в возрасте старше 20 и моложе 70 лет, которые остались хотя бы на один день. Отсортируйте результаты в порядке убывания.
В этом не работает на основе моих вопросов: любая помощь
library(dplyr)
df <- heartatk4R%>%
filter (SEX= = "F"& AGE >20 & AGE < 70 & DRG >== )%>%
group_by(heartatk4R)%>%
arrange (CostPerDay = CHARGES)%>%
summarise(AvgCostPERDAY = (CostPerDay, na.rm = _))%>%
(-AvgCostPerDay)
df
Спасибо





Вы можете Рассчитать среднюю стоимость в день с aggregate например:
heartatk4R <- read.table("http://statland.org/AP/R/heartatk4R.txt", header = TRUE, sep = "\t", colClasses = c("character", "factor", "factor", "factor","factor", "numeric", "numeric", "numeric"), na.strings = "*")
tt <- with(heartatk4R[heartatk4R$SEX= = "F" & heartatk4R$AGE>20 & heartatk4R$AGE<70,],
aggregate(data.frame(CostPerDay = CHARGES), data.frame(DIAGNOSIS), FUN=mean, na.rm=TRUE))
tt[order(-tt[,2]),]
# DIAGNOSIS CostPerDay
#1 41001 11911.179
#3 41021 11165.837
#2 41011 10922.091
#5 41041 10366.557
#4 41031 10101.536
#8 41081 9641.175
#7 41071 9558.745
#9 41091 9528.740
#6 41051 9393.048
Я не знаю, где посмотреть, если человек остался хотя бы на один день?
Используя dplyr, мы могли бы filter значения, group_byDIAGNOSIS и взять mean из CHARGES
heartatk4R <- read.csv(url("http://statland.org/AP/R/heartatk4R.txt"), sep = "\t")
library(dplyr)
heartatk4R %>%
filter(SEX == "F" & AGE > 20 & AGE < 70) %>%
mutate(CHARGES = as.numeric(as.character(CHARGES))) %>%
group_by(DIAGNOSIS) %>%
summarise(AvgCostPERDAY = mean(CHARGES, na.rm = TRUE)) %>%
arrange(desc(AvgCostPERDAY))
# DIAGNOSIS AvgCostPERDAY
# <int> <dbl>
#1 41001 11911.
#2 41021 11166.
#3 41011 10922.
#4 41041 10367.
#5 41031 10102.
#6 41081 9641.
#7 41071 9559.
#8 41091 9529.
#9 41051 9393.