请附上我的样本data set。
我要实现的真正目的是创建一个数据帧,该数据帧首先根据时间段的升序对数据进行排序,并且在每个时间段内,数据均按大小写的降序再次排序(按时间段分组,地区,经理,员工)
到目前为止,我已经完成了此操作,但是它没有提供我想要的东西。
我打算绘制此值,所以这就是为什么我需要首先按升序对它进行排序,并且在每个值中我都希望数据按降序进行排序。
SampleRADN <- read_excel("C:/Users/xxx/Documents/Exercises/PBIR/SampleRADN.xlsx")
df1<-unique(data.frame(SampleRADN))
library(dplyr)
df2<-df1%>%count(period,region,manager,employee)
df3<-df2[order(df2$period, -df2$n)
非常感谢您的帮助。
答案 0 :(得分:0)
@NelsonGon非常感谢您指出用户需要以更好的方式提供数据,以便正在寻找解决方案的人始终可以访问数据并进行回答。老实说,我没有想到这一点。但是,我的样本数据有600多个行,除通过链接提供数据外,我不知道如何复制这种大小的样本数据。 但是,我通过执行以下操作解决了这个问题
library(openxlsx)
library(dplyr)
library(tidyverse)
df <- read.xlsx("C:/Users/smpao1/Documents/Exercises/PBIR/SampleRADN.xlsx")
df1<-data.frame(df)
df2<-df1%>%count(period,region)
df3<-df2[order(df2$period, -df2$n),]
df4<-df1%>%count(period,region,manager,employee)
df5<-df4[order(df4$period, -df4$n),]
df6<-left_join(df3,df5,by=c("period"="period","region"="region"))
df7<-df6%>% select(period, region, manager, employee,n.y)
答案 1 :(得分:0)
如果我理解正确,OP将按升序对数据进行排序,并在每个周期内按案件数的降序对数据进行排序(按时期,地区,经理,员工分组)。
OP's own answer中的解决方案太复杂了。我的建议是将组计数添加到数据框中,然后按期间和计数进行排序。
dplyr
library(dplyr)
df2 <- readxl::read_xlsx("SampleRADN.xlsx") %>%
add_count(period, region, manager, employee, name = "count") %>%
arrange(period, -count)
df2
# A tibble: 369 x 6 region period manager employee case count <chr> <dbl> <chr> <chr> <chr> <int> 1 Eastern 1 RP DL 2019-467 12 2 Eastern 1 RP DL 2019-591 12 3 Eastern 1 RP DL 2019-1009 12 4 Eastern 1 RP DL 2019-1747 12 5 Eastern 1 RP DL 2019-2536 12 6 Eastern 1 RP DL 2019-2579 12 7 Eastern 1 RP DL 2019-683 12 8 Eastern 1 RP DL 2019-1127 12 9 Eastern 1 RP DL 2019-1748 12 10 Eastern 1 RP DL 2019-1749 12 # ... with 359 more rows
data.table
library(data.table)
df <- readxl::read_xlsx("SampleRADN.xlsx")
setDT(df)[, count := .N, by = .(period, region, manager, employee)]
setorder(df, period, -count)
df
region period manager employee case count 1: Eastern 1 RP DL 2019-467 12 2: Eastern 1 RP DL 2019-591 12 3: Eastern 1 RP DL 2019-1009 12 4: Eastern 1 RP DL 2019-1747 12 5: Eastern 1 RP DL 2019-2536 12 --- 365: Central 6 TG RK 2019-28005 1 366: Central 6 EL MP 2019-28363 1 367: Central 6 SS DC 2019-29488 1 368: Central 6 JT LV 2019-30283 1 369: Central 6 KJ SL 2019-27948 1