R取每组的最小列数

时间:2019-03-04 23:55:45

标签: r dplyr data-cleaning

样本数据

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等于每个ID复制的得分的最小值。这是我对dplyr的尝试,但这只会使数据变小,并为id提供一行。

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

1 个答案:

答案 0 :(得分:1)

对我来说没有错误

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