R 将行折叠为一个值

R 将行折叠为一个值,r,R,我有一个数据集: LOC Store Question Rating NYC MCD Food quality? 3 NYC MCD Water quality? 4 NYC MCD Cleanliness? 5 LA BK Food quality? 3 LA BK Water quality? 2 LA

我有一个数据集:

LOC     Store   Question        Rating

NYC     MCD     Food quality?       3
NYC     MCD     Water quality?      4
NYC     MCD     Cleanliness?        5

LA      BK      Food quality?       3
LA      BK      Water quality?      2   
LA      BK      Cleanliness?        5

SF      MCD     Food quality?       4
SF      MCD     Water quality?      5   
SF      MCD     Cleanliness?        4
我想把这些问题分解成每个商店的平均评分:

Loc Store   Avg.Rating
NYC MCD     (3+4+5)/3
LA  BK      (3+2+5)/3
SF  MCD     (4+5+4)/3
tribble
为方便起见:

df <- 
tribble(
~LOC,   ~Store, ~Question,  ~Rating,
"NYC",  "MCD",  "Food?",        3,
"NYC",  "MCD",  "Water?",       4,
"NYC",  "MCD",  "Clean?",       5,
"LA",   "BK",   "Food?",        3,
"LA",   "BK",   "Water?",       2,  
"LA",   "BK",   "Clean?",       5,
"SF",   "MCD",  "Food?",        4,
"SF",   "MCD",  "Water?",       5,  
"SF",   "MCD",  "Clean?",       4
)

df最简单的方法是使用dplyr中的“groupby”和“summary”

library("tibble")
library("dplyr")
library("magrittr")

df <- 
tribble(
~LOC,   ~Store, ~Question,  ~Rating,
"NYC",  "MCD",  "Food?",        3,
"NYC",  "MCD",  "Water?",       4,
"NYC",  "MCD",  "Clean?",       5,
"LA",   "BK",   "Food?",        3,
"LA",   "BK",   "Water?",       2,  
"LA",   "BK",   "Clean?",       5,
"SF",   "MCD",  "Food?",        4,
"SF",   "MCD",  "Water?",       5,  
"SF",   "MCD",  "Clean?",       4
)

store.avg <- group_by(df, LOC, Store) %>%
  summarize(Avg.Rating = mean(Rating))

# A tibble: 3 x 3
# Groups:   LOC [3]
  LOC   Store Avg.Rating
  <chr> <chr>      <dbl>
1 LA    BK          3.33
2 NYC   MCD         4   
3 SF    MCD         4.33
库(“tibble”)
图书馆(“dplyr”)
图书馆(“magrittr”)

你想要每组的平均值吗<代码>聚合(评级~LOC+存储、df、平均值)
分组依据
基本上将数据分成具有“LOC”和“存储”独特组合的组<代码>汇总
然后将遍历这些组中的每个组,并对指定列执行一项功能。因此,在这种情况下,它将是每个分组的“评级”列的平均值。