У меня есть данные, которые выглядят следующим образом:
| Employee | Employee_id | Transaction_date | Expense_Type | Attendees | Vendor | Purpose | Amount |
|----------|:-----------:|-----------------:|-----------------|-----------|--------------|-----------------------------|--------|
| Nancy | 1 | 12/27/2018 | Individual_Meal | NA | Chiles | Dinner in NYC | 128 |
| David | 2 | 9/9/2017 | Group_Meal | Jess | Renaissance | External Business Meeting | 600 |
| David | 2 | 9/9/2017 | Group_Meal | Peter | Renaissance | External Business Meeting | 600 |
| David | 2 | 9/9/2017 | Group_Meal | David | Renaissance | External Business Meeting | 600 |
| John | 3 | 10/4/2017 | Group_Meal | Mike | Subway | Lunch with Mike and Maximus | 130 |
| Mary | 4 | 1/16/2019 | Group_Meal | Carol | Olive_Garden | summit with Intel | 235 |
| Mary | 4 | 1/16/2019 | Group_Meal | Sonia | Olive_Garden | summit with Intel | 235 |
| Mary | 4 | 1/16/2019 | Group_Meal | James | Olive_Garden | summit with Intel | 235 |
| Mary | 4 | 1/16/2019 | Group_Meal | Mary | Olive_Garden | summit with Intel | 235 |
| John | 3 | 10/4/2017 | Group_Meal | Maximus | Subway | Lunch with Mike and Maximus | 130 |
| John | 3 | 10/4/2017 | Group_Meal | John | Subway | Lunch with Mike and Maximus | 130 |
| Richard | 5 | 4/11/2018 | Individual_Meal | NA | Dominos | Dinner in Ohio | 50 |
Я хочу объединить таблицу таким образом, чтобы я мог видеть количество посетителей для каждого сотрудника и общие расходы, понесенные для них.Финальная таблица должна выглядеть примерно так:
| Employee | Employee_id | Transaction_date | Expense_Type | Vendor | Purpose | No_of_Attendee | Total_Amount |
|----------|:-----------:|-----------------:|-----------------|--------------|-----------------------------|----------------|--------------|
| Nancy | 1 | 12/27/2018 | Individual_Meal | Chiles | Dinner in NYC | 1 | 128 |
| David | 2 | 9/9/2017 | Group_Meal | Renaissance | External Business Meeting | 3 | 1800 |
| John | 3 | 10/4/2017 | Group_Meal | Subway | Lunch with Mike and Maximus | 3 | 390 |
| Mary | 4 | 1/16/2019 | Group_Meal | Olive_Garden | summit with Intel | 4 | 940 |
| Richard | 5 | 4/11/2018 | Individual_Meal | Dominos | Dinner in Ohio | 1 | 50 |
Далее я хочу сгенерировать график области, где у меня есть «дата транзакции» на оси x и «сумма» на оси y с различными переменными, такими как vendorЦель, указанная в подсказке.Я попробовал некоторый код, но я не уверен, как рассчитать частоту и сумму двух разных столбцов, сохраняя при этом другие столбцы, как показано в желаемой выходной таблице.Кроме того, когда я пытаюсь использовать текст в ggplot2, граф области подходит, пока не упомянут только сотрудник.Как только я включу продавца и / или цель, график области изменится.Я не уверен, почему это происходит.Может кто-нибудь взглянуть на мой код и сообщить, что не так и как его исправить?
library(readxl)
library(dplyr)
library(ggplot2)
library(plotly)
df4=read_excel("C:/Users/xyz/Desktop/eg1.xlsx")
df4_freq=df4 %>% group_by(Employee,Employee_id,Transaction_date,Vendor,Purpose,Expense_Type,
Amount) %>% summarise(count=n())
colnames(df4_freq)[8]= "No_of_Attendee"
plot=ggplot(d4_freq, aes(x = Transaction_date, y = Amount,
text=paste('Employee:',Employee,
'<br>No of Attendees:', No_of_Attendee,
'<br>Amount Per Attendee:', Amount,
'<br>Purpose:', Purpose,
'<br>Vendor:', Vendor
))) +
geom_area(aes(color = Expense_Type, fill = Expense_Type),
alpha = 0.5, position = position_dodge(0.8))+
geom_point(colour="black")+
scale_color_manual(values = c("#CC6600", "#606060")) +
scale_fill_manual(values = c("#CC6600", "#606060"))
plot=ggplotly(p, tooltip = c("x","y","text"))
plot
ЧАСТЬ 2: Другая проблема, с которой я сталкиваюсь, связана с графиком площади.Если я введу только «сотрудник» в качестве переменной в «текст», мой график будет идеальным.Но когда я ввожу другие переменные, такие как «No_of_Attendee», «Vendor» и т. Д., Мой график меняется на прямые линии.Есть ли проблема с ggplotly или text?Для справки, я публикую код еще раз, так как добавил к нему еще несколько данных.
library(readxl)
library(dplyr)
library(ggplot2)
library(plotly)
df4=data.frame("Employee"=c("Nancy","David","David","David","John","Mary","Mary","Mary","Mary",
"John","John","Richard","David","David","Mary","Mary","Mary"),
"Employee_id"=c(1,2,2,2,3,4,4,4,4,3,3,5,2,2,4,4,4),
"Transaction_date"=c("12/27/2018","9/9/2017","9/9/2017","9/9/2017","10/4/2017","1/16/2019",
"1/16/2019","1/16/2019","1/16/2019","10/4/2017","10/4/2017","4/11/2018","1/1/2018","1/1/2018",
"4/5/2018","4/5/2018","4/5/2018"),
"Expense_Type"=c("Individual_Meal","Group_Meal","Group_Meal","Group_Meal","Group_Meal",
"Group_Meal","Group_Meal","Group_Meal","Group_Meal","Group_Meal", "Group_Meal",
"Individual_Meal","Group_Meal","Group_Meal","Group_Meal" ,"Group_Meal","Group_Meal"),
"Attendees"=c("NA","Jess","Peter","David","Mike","Carol","Sonia","James","Mary","Maximus",
"John","NA","Arya","David","Jon","Elizabeth","Marco"),
"Vendor"=c("Chiles","Renaissance","Renaissance","Renaissance","Subway","Olive_Garden","Olive_Garden",
"Olive_Garden","Olive_Garden","Subway","Subway","Dominos","BJ","BJ","Little_Italy","Little_Italy","Little_Italy"),
"Purpose"=c("Dinner in NYC","External Business Meeting","External Business Meeting","External Business Meeting",
"Lunch with Mike and Maximus","summit with Intel","summit with Intel","summit with Intel","summit with Intel",
"Lunch with Mike and Maximus","Lunch with Mike and Maximus","Dinner in Ohio","Lunch with Arya","Lunch with Arya",
"Business_Meeting","Business_Meeting","Business_Meeting"),
"Amount"= c(128,600,600,600,130,235,235,235,235,130,130,50,95,95,310,310,310))
str(df4)
df4$Transaction_date<- as.Date(df4$Transaction_date, "%m/%d/%Y")
df4_freq=df4 %>% group_by(Employee,Employee_id,Transaction_date,Vendor,Purpose,Expense_Type)%>% summarise(No_of_Attendee=n(), Total_Amount=sum(Amount))
plot=ggplot(df4_freq, aes(x = Transaction_date, y = Total_Amount,
text=paste('Employee:',Employee))) +
geom_area(aes(color = Expense_Type, fill = Expense_Type),
alpha = 0.5, position = position_dodge(0.8))+
geom_point(colour="black")+
scale_color_manual(values = c("#CC6600", "#606060")) +
scale_fill_manual(values = c("#CC6600", "#606060"))
plot=ggplotly(plot, tooltip = c("x","y","text"))
plot
Ниже приведен график, который выглядит идеально, только с переменной «Сотрудник» в тексте.
Однако, когда я включаю другие переменные, такие как 'No_of_Attendee', 'Vendor' и т. Д., Мой график представляется в виде одной линии.Ниже приведен код и график.
plot=ggplot(df4_freq, aes(x = Transaction_date, y = Total_Amount,
text=paste('Employee:',Employee,
'<br>No of Attendees:', No_of_Attendee,
'<br>Total_Amount:', Total_Amount,
'<br>Purpose:', Purpose,
'<br>Vendor:', Vendor
))) +
geom_area(aes(color = Expense_Type, fill = Expense_Type),
alpha = 0.5, position = position_dodge(0.8))+
geom_point(colour="black")+
scale_color_manual(values = c("#CC6600", "#606060")) +
scale_fill_manual(values = c("#CC6600", "#606060"))
plot=ggplotly(plot, tooltip = c("x","y","text"))
plot
Было бы очень здорово и полезно, если бы кто-то мог помочь мне, что не так с моим кодом.