簡體   English   中英

R:顯示每個變量均值最高的組

[英]R: Show Groups with highest mean per Variable

我有一個數據集,航空公司乘客對清潔度、座椅舒適度、登機口位置等多個類別的滿意度得分 (0-5)。該數據集還包括有關 class、旅行類型、年齡等的信息。

我想了解商務 class 旅客是否(平均)在每個類別中都比經濟 class 旅客更滿意。

我知道我可以檢查 A...n 類的平均滿意度分數,按 class 分組。 (見下文)

library(dplyr)

final_dataset %>%
  group_by(Class) %>%
  summarise_at(vars(Cleanliness), list(mean = mean))

這樣我就可以知道不同類別對於給定類別的含義是什么。 我已經嘗試過了,它有效。 雖然這是一個很大的努力,但看起來並不好。 必須有更好的方法,這樣我才能看到類別列表以及最滿意的 class,對吧?

Class 是一個因素(找到下面的代碼),而滿意度分數是雙倍的。

final_dataset$Class <- as.factor(final_dataset$Class) 

我試過這個(但它沒有用。甚至不完全知道它的作用):

library( data.table )
setDT( final_dataset )
final_dataset[ , .( mean.change = mean( "Cleanliness" ) ),
                 by = Class
              ][ , Class[ which.max( mean.change ) ] ] 

錯誤消息如下:

[.data.table (final_dataset, , .(mean.change = mean("Cleanliness")), 中的錯誤:fastmean 傳遞的是類型字符,不是數字或邏輯>

我在尋找解決方案時閱讀了一些關於在其他帖子中提供示例數據的內容,但不知道這是否是如何做到的。 我試着插入一點作為樣本。 僅供參考: 是我刪除數據集的地方。

ID      Class           Check-in Service   Online Boarding     Gate Location   Cleanliness
<chr>   <dbl>           <dbl>
1       Business        3                  3                   4               3    
2       Economy Plus    2                  2                   3               5
3       Economy         2                  2                   3               2    
4       Business        4                  4                   4               5
5       Economy         1                  1                   3               2

我希望這就是您理解我的問題所需的全部內容,我對此很陌生。

在此先感謝您的幫助!

我不確定你想要什么,但這是我對data.table package 的嘗試。 Tidyverse 對 R 來說是必不可少的。 我不明白你所說的“看起來不太好”是什么意思:)

df<-tibble(Class=c("Business","Economy Plus","Economy","Business"),service1=c(1,2,3,4),service2=c(1,2,3,4),service3=c(1,2,3,4),service4=c(1,2,3,4))


df$Class <- as.factor(df$Class)

虛擬數據:

    # A tibble: 4 x 5
  Class        service1 service2 service3 service4
  <chr>           <dbl>    <dbl>    <dbl>    <dbl>
1 Business            1        1        1        1
2 Economy Plus        2        2        2        2
3 Economy             3        3        3        3
4 Business            4        4        4        4

--

library(data.table)

df<-as.data.table(df)

df<-df[,.(satisfaction=mean(c(service1,service2,service3,service4))),by=Class]

output:

          Class satisfaction
1:     Business          2.5
2: Economy Plus          2.0
3:      Economy          3.0

希望這對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM