У меня есть данные, которые выглядят так:
| 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 с различными переменными, такими как поставщик, цель, указанная во всплывающей подсказке. Я пробовал код, но не уверен, как рассчитать частоту и сумму двух разных столбцов, сохранив при этом другие столбцы, как показано в желаемой выходной таблице. Кроме того, когда я пытаюсь использовать текст в 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 или текстом? Для справки, я снова отправляю код, так как добавил в него еще несколько данных.
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
Было бы здорово и полезно, если бы кто-нибудь помог мне в том, что не так с моим кодом.
dput(head(YOUR_DATA))
. - person Jon Spring   schedule 28.04.2019%>% summarise(count=n())
на%>% summarise(No_of_Attendee = sum(!is.na(Attendees)), Total_Amount = sum(Amount))
- person Jon Spring   schedule 28.04.2019