рассчитать итоговую статистику по разным рейтингам по заданной цене в R? - PullRequest
0 голосов
/ 03 мая 2018

У меня есть следующий фрейм данных

price<-c(100,150,120,150,140,530)
rating<-c(2,2,1,1,1,3)
rooms<-c(1,1,1,1,2,4)
df<-data.frame(price,rating,rooms)

  price rating rooms
1   100      2     1
2   150      2     1
3   120      1     1
4   150      1     1
5   140      1     2
6   530      3     4

В основном я хочу найти сводную статистику по цене на основе рейтинга. Я попробовал следующее с помощью split

split(df,rating)

Но как мне тогда использовать функцию summary для цен, основанных на каждом из рейтингов?

Также есть ли способ сделать это без установки каких-либо пакетов?

Ответы [ 3 ]

0 голосов
/ 03 мая 2018

tapply(df$price, df$rating, mean)

0 голосов
/ 03 мая 2018

Чтобы продолжить, где вы остановились:

sapply(split(df$price, rating), summary)
               1     2   3
Min.    120.0000 100.0 530
1st Qu. 130.0000 112.5 530
Median  140.0000 125.0 530
Mean    136.6667 125.0 530
3rd Qu. 145.0000 137.5 530
Max.    150.0000 150.0 530
0 голосов
/ 03 мая 2018

Это все базовая R. Вы можете использовать by, чтобы применить функцию к кадру данных, разбитую по коэффициенту.

Преобразовать df$rating в коэффициент первым. Затем при условии, что вы хотите получить сводную статистику, равную summary:

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

by(df$price, df$rating, summary)

df$rating: 1
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  120.0   130.0   140.0   136.7   145.0   150.0 
------------------------------------------------------------ 
df$rating: 2
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  100.0   112.5   125.0   125.0   137.5   150.0 
------------------------------------------------------------ 
df$rating: 3
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
    530     530     530     530     530     530 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...