我将以下数据框中的内容导入到了R中
Service Container_Pick_Day
ABC 0
ABC 1
ABC 1
ABC 2
ABC NA
ABC 0
ABC 1
DEF NA
DEF 0
DEF 1
DEF 1
DEF 1
DEF 2
DEF 1
列 Container_Pick_Day
是数值型的,并包含 NA
值。
我想要做的是计算每个 Service
在 0天、1天、2天等
后提取容器的百分比,忽略 NA
值。
期望得到的数据框如下:
Service Container_Pick_Day Percentage
ABC 0 (2/6)*100 = 33.33
ABC 1 (3/6)*100 = 50
ABC 2 (1/6)*100 = 16.67
DEF 0 (1/6)*100 = 16.67
DEF 1 (3/6)*100 = 50
DEF 2 (1/6)*100 = 16.67
我在R中进行了以下操作,但输出结果中出现了NA值。
df%>%
group_by(Service) %>%
summarise(pick_day_perc = n()/sum(Container_Pick_Day),na.rm=T) %>%
as.data.frame()
我需要按照 Service
和 Container_Pick_Day
两个方面进行分组吗?
sum(Container_Pick_Day, na.rm=TRUE)
? - Remko Duursmadf%>% filter(!is.na(Container_Pick_Day))%>% group_by(Service,Container_Pick_Day)%>% summarise(Percentage = n())%>% group_by(Service)%>% mutate(Percentage = Percentage / sum(Percentage)* 100)
。猜测还有更简洁的解决方案。 - nicolacount
函数,即df %>% filter(complete.cases(Container_Pick_Day)) %>% count(Service, Container_Pick_Day) %>% group_by(Service) %>% transmute(Container_Pick_Day, Percentage=n/sum(n)*100)
。这将计算每个服务下完整数据中Container_Pick_Day
的频数,并按服务进行分组,并在最终结果中显示Container_Pick_Day
和该日占其服务总选箱数的百分比。 - akrundf %>% na.omit() %>% group_by_all() %>% summarise(ptg = n()) %>% group_by(Service) %>% mutate(ptg = prop.table(ptg)*100)
。 - Sotos