R Взять минимум столбца для каждой группы - PullRequest
0 голосов
/ 05 марта 2019

Пример данных

data =data.frame(id=c(1,1,2,2,3,3,4,4,5,5),
score=c(10,6,1,7,6,0,8,5,5,1),
WANT=c(6,6,1,1,0,0,5,5,1,1))

Цель состоит в том, чтобы создать новый столбец WANT, равный минимальному значению оценки, скопированному для каждого идентификатора.Это моя попытка использовать dplyr, но это только уменьшает размер данных и дает одну строку для идентификатора.

library(dplyr)    
data %>% 
    group_by(id) %>% 
    slice(which.min(score))

1 Ответ

0 голосов
/ 05 марта 2019

нет ошибок для меня:

data =data.frame(id=c(1,1,2,2,3,3,4,4,5,5),
             score=c(10,6,1,7,6,0,8,5,5,1),
             WANT=c(6,6,1,1,0,0,5,5,1,1))


library(dplyr)    
data %>% 
  group_by(id) %>% 
  mutate(want2 = min(score))
      id score  WANT want2
   <dbl> <dbl> <dbl> <dbl>
 1     1    10     6     6
 2     1     6     6     6
 3     2     1     1     1
 4     2     7     1     1
 5     3     6     0     0
 6     3     0     0     0
 7     4     8     5     5
 8     4     5     5     5
 9     5     5     1     1
10     5     1     1     1

И вы можете сделать это летом:

data %>% 
  group_by(id) %>% 
  summarise(want2 = min(score))
     id want2
  <dbl> <dbl>
1     1     6
2     2     1
3     3     0
4     4     5
5     5     1
...