首页 > 解决方案 > 在 R 中的某些观察之前选择组

问题描述

data=structure(list(x1 = c(88L, 88L, 94L, 82L, 68L, 72L, 43L, 84L, 
65L, 91L, 65L, 80L, 82L, 63L, 67L, 58L, 100L, 32L, 75L, 66L, 
30L, 12L, 97L, 58L, 14L, 64L), group = structure(c(2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("female", "male"), class = "factor")), .Names = c("x1", 
"group"), class = "data.frame", row.names = c(NA, -26L))

在这个数据中有组变量(性别(男性和女性)我需要得到统计平均值和 25 个百分位的所有男性,在女性之前。男性在女性之后,我不碰。还有女性我不碰。所以作为输出

x1  group   mean    25%
88  male    76,36   66,5
88  male    76,36   66,5
94  male    76,36   66,5
82  male    76,36   66,5
68  male    76,36   66,5
72  male    76,36   66,5
43  male    76,36   66,5
84  male    76,36   66,5
65  male    76,36   66,5
91  male    76,36   66,5
65  male    76,36   66,5
80  female      
82  female      
63  female      
67  female      
58  female      
100 female      
32  female      
75  male        
66  male        
30  male        
12  male        
97  male        
58  male        
14  male        
64  male        

怎么做?

编辑

x1  group
88  male
88  male
94  male
82  male
68  male
72  male
43  male
84  male
65  male
91  male
65  male
80  female
82  female
63  female
67  female
58  female
100 female
32  female
**76,36 male
**76,36 male
30  male
12  male
**76,36 male
58  male
14  male
64  male

这里的结果。

标签: rdplyrdata.table

解决方案


data.table中,您可以编辑其中的行,rleid(group) == 1即第一组行,按 的值分组group

library(data.table)
setDT(df)

df[rleid(group) == 1, `:=`(mean = mean(x1), Q25 = quantile(x1, 0.25))]

结果

#      x1  group     mean  Q25
#  1:  88   male 76.36364 66.5
#  2:  88   male 76.36364 66.5
#  3:  94   male 76.36364 66.5
#  4:  82   male 76.36364 66.5
#  5:  68   male 76.36364 66.5
#  6:  72   male 76.36364 66.5
#  7:  43   male 76.36364 66.5
#  8:  84   male 76.36364 66.5
#  9:  65   male 76.36364 66.5
# 10:  91   male 76.36364 66.5
# 11:  65   male 76.36364 66.5
# 12:  80 female       NA   NA
# 13:  82 female       NA   NA
# 14:  63 female       NA   NA
# 15:  67 female       NA   NA
# 16:  58 female       NA   NA
# 17: 100 female       NA   NA
# 18:  32 female       NA   NA
# 19:  75   male       NA   NA
# 20:  66   male       NA   NA
# 21:  30   male       NA   NA
# 22:  12   male       NA   NA
# 23:  97   male       NA   NA
# 24:  58   male       NA   NA
# 25:  14   male       NA   NA
# 26:  64   male       NA   NA
#      x1  group     mean  Q25

推荐阅读