R为每个组取最小列数

问题描述 投票:1回答: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))

目标是使新列WANT等于为每个id复制的分数的最小值。这是我对dplyr的尝试,但这只会使数据变小,并为id提供一行。

library(dplyr)    
data %>% 
    group_by(id) %>% 
    slice(which.min(score))
r dplyr data-cleaning
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.