【发布时间】:2021-08-23 11:08:04
【问题描述】:
我想制作一个图表,显示相对于可以告诉我更多关于公司的变量的销售量。我希望每种产品都有不同的情节(例如各种水果:苹果、香蕉)。接下来,我想让这些图也可以轻松地用于其他公司变量。
我有一个变量的工作代码,但函数没有。它不接受它应该接受的论点。我知道这与非标准评估有关,但我无法解决此问题。
MASTERDATA%>%
group_by(COMPANY)%>%
summarize(AMOUNT_COMP = (sum(AMOUNT, na.rm=TRUE)),
Type=Type,
COMP_VAR1=COMP_VAR1)%>%
filter(!is.na(Type)) %>%
ggplot(aes(COMP_VAR1,AMOUNT_COMP ), na.rm = TRUE)+
geom_point()+
facet_wrap(~Type,nrow=4)
函数代码如下
plot_var_aantal<-function(vari){
eval(substitute(vari), MASTERDATA)
MASTERDATA%>%
group_by(COMPANY)%>%
summarize(AMOUNT_COMP = (sum(AMOUNT, na.rm=TRUE)),
Type=Type,
vari=vari)%>%
filter(!is.na(Type)) %>%
ggplot(aes(vari,AMOUNT_COMP ), na.rm = TRUE)+
geom_point()+
facet_wrap(~Type,nrow=4)
}
例如,如果我放 plot_var_aantal("people") 我只会在 x 轴上得到单词 people,所有点都在一条直线上。
数据示例
| Productnr | Type | Amount | COMPANY | COMP_VAR1 | COMP_VAR2 |
|---|---|---|---|---|---|
| 1 | Apple | 29 | Company1 | 2 | 45 |
| 1 | Pear | 271 | Company2 | 2 | 45 |
| 3 | Apple | 565 | Company2 | 5 | 78 |
| 2 | Banana | 354 | Company2 | 12 | 36 |
| 2 | Pear | 984 | Company3 | 12 | 36 |
| 1 | Banana | 247 | Company3 | 2 | 45 |
| ... | ... | ... | ... | ... | ... |
【问题讨论】:
-
请使用
dput(head(MASTERDATA))分享您的数据的一个小例子。 -
不确定,您要做什么。也许用
{{ vari }} := vari替换vari = vari可以解决您的问题。aes()中的vari也应该是卷曲的。 -
为什么
summarise中有Type=Type和vari=vari?他们应该怎么做? -
@RonakShah 我在那里使用它们,因为我发现否则我没有这些变量可以在后面的行中使用。例如绘图或过滤器。
-
如果这些变量始终相同,您可能需要将它们包含在
group_by中,或者为了保持相同的行数使用mutate而不是summarise。