我这里有一个复杂的问题。我正在尝试按位置创建匿名,每月比较或账单价格。目标是创建一个这样的图,该图提供匿名可视化,可以在提供程序之间分发。问题在于,在下图中,Corbin的数据实际上是从底部开始的第三组。使用相同的数据,我可以生成具有所有名称的正确图形。
如果我只考虑一个月,但是下面的代码可以完美地创建图形,但是如果我考虑一个多月,则标签不再与正确的组相对应。
AdjustedData[order("Reconciled.Month", "Location", "Provider"),]
AdjustedData$Provider %>%
walk(~{
filtered2_AdjustedData <- AdjustedData %>%
filter(Location == Location[Provider == .x])
labels2 <- array(data = '',dim = nrow(filtered2_AdjustedData))
labels2[filtered2_AdjustedData$Provider == as.character(.x)] <- as.character(.x)
h <- filtered2_AdjustedData %>%
ggplot(aes(Provider, Per.Visit.Bill.Rate, fill = Reconciled.Month), show.legend = TRUE) +
geom_bar(stat = "identity", position = position_dodge(width = .9), na.rm = TRUE) +
ggtitle("Per Visit Bill Rate- 2018", filtered2_AdjustedData$Location)+
theme_light()+
theme(plot.title = element_text(size = 22, hjust = .5, family = "serif"))+
theme(plot.subtitle = element_text(size = 18, hjust = .5, family = "serif"))+
theme(axis.text.x=element_text(angle= 0, vjust=1, hjust = .5))+
labs(caption = "Data sourced from Provider Compensation Analysis and \nMonthly Summary of Billed Physician Encounters Reports,2018. \nRates have been adjusted to exclude the deduction per visit for malpractice insurance where applicable.")+
theme(plot.caption = element_text(size= 8, hjust = .5))+
scale_x_discrete(labels = labels2)+
geom_text(aes(x=Provider, y= Per.Visit.Bill.Rate,label=sprintf("$%.2f",Per.Visit.Bill.Rate)), position = position_dodge(.8), hjust= 0, vjust= .5, angle = 0, size = 3)+
scale_fill_manual(values=c("darkolivegreen3","dodgerblue3", "goldenrod2", "firebrick")) +
scale_y_continuous(name = "Per Visit Bill Rate ($)", limits = c(0,100),breaks =seq(0,100,10), labels = dollar)+coord_flip()+
guides(fill=guide_legend(title = "Month", reverse = FALSE))
print(h)})
此代码还可以将图形复制x次,持续x个月。例如,如果我正在考虑1月至4月,则会得到4张图表。此外,一些提供程序直到年中的一部分才被雇用,因此Jan可能会空着。这是由于该代码创建了一个名称向量,该名称向量在映射到绘图时会不匹配。我已经尝试了na.rm和na.omit的每种组合,并且确保在没有使用提供者的每种情况下,提供者都有一个空白条目,以便条正确显示但没有运气。我知道问题所在,但找不到解决方案。我愿意完全改变自己的方法。
数据:
Provider Reconciled Month Per Visit Bill Rate Location
Alex 1 AZ
Daniels 1 29.08 AZ
Edwin 1 31.39 AZ
Goldberg 1 30 UT
Brown 1 25.74 UT
Bowman 1 33.54 UT
Davis 1 31.5 CA
Fenner 1 CA
Gordon 1 39.36 CA
Alex 2 AZ
Daniels 2 33.23 AZ
Edwin 2 36.63 AZ
Goldberg 2 45.22 UT
Brown 2 72.98 UT
Bowman 2 40.01 UT
Reed 2 31.67 CA
Simmonds 2 50.82 CA
Villasenor 2 27.02 CA
Alex 3 30.63 AZ
Daniels 3 40.71 AZ
Edwin 3 23.21 AZ
Goldberg 3 27.56 UT
Brown 3 33.09 UT
Bowman 3 37.26 UT
Davis 3 45.71 CA
Fenner 3 32.62 CA
Gordon 3 32.28 CA
Alex 4 49.74 AZ
Daniels 4 74.6 AZ
Edwin 4 45.83 AZ
Goldberg 4 31.67 UT
Brown 4 52.23 UT
Bowman 4 65.21 UT
Reed 4 14.25 CA
Simmonds 4 45.36 CA
Villasenor 4 36.45 CA
答案 0 :(得分:0)
虽然我确定这不是实现此目标的最有效方法,但关键是要确保两件事: 1)确保在每个月都填写了所有提供者的姓名,月份和位置字段,但是即使账单信息缺席了一个月,账单信息也为空。 2)确保提供者按位置分组,然后按月份分组。此后,提供者必须每月使用相同的顺序,因为此方法只是创建名称向量并将其应用于轴。如果以其他方式列出了提供者,则标签将不正确。
这不能解决重复问题,但至少现在标签是正确的。
一个额外的好处:删除
filtered2_AdjustedData <- AdjustedData %>%
filter(Location == Location[Provider == .x])
,然后将适当的引用更改为filtered2 _ ..,将导致整个公司的身份图总体消失。