r计算百分位数_计算90百分位数并用R中的中位数替换它

这里是部分数据 .

mydat=structure(list(code = c(123L, 123L, 123L, 123L, 123L, 123L, 123L,

123L, 123L, 123L, 123L, 123L, 123L, 123L, 123L, 123L, 123L, 123L,

123L, 123L, 123L, 123L, 123L, 123L, 123L, 123L, 123L, 123L, 123L,

123L, 123L, 123L, 123L, 123L, 123L, 123L, 123L, 123L, 123L, 123L,

123L, 123L, 123L, 123L, 123L, 123L, 123L, 222L, 222L, 222L, 222L,

222L, 222L, 222L, 222L, 222L, 222L, 222L, 222L, 222L, 222L, 222L,

222L, 222L, 222L, 222L, 222L, 222L, 222L, 222L, 222L, 222L, 222L,

222L, 222L, 222L, 222L, 222L, 222L, 222L, 222L, 222L, 222L, 222L,

222L, 222L, 222L, 222L, 222L, 222L, 222L, 222L, 222L, 222L),

item = c(234L, 234L, 234L, 234L, 234L, 234L, 234L, 234L,

234L, 234L, 234L, 234L, 234L, 234L, 234L, 234L, 234L, 234L,

234L, 234L, 234L, 234L, 234L, 234L, 234L, 234L, 234L, 234L,

234L, 234L, 234L, 234L, 234L, 234L, 234L, 234L, 234L, 234L,

234L, 234L, 234L, 234L, 234L, 234L, 234L, 234L, 234L, 333L,

333L, 333L, 333L, 333L, 333L, 333L, 333L, 333L, 333L, 333L,

333L, 333L, 333L, 333L, 333L, 333L, 333L, 333L, 333L, 333L,

333L, 333L, 333L, 333L, 333L, 333L, 333L, 333L, 333L, 333L,

333L, 333L, 333L, 333L, 333L, 333L, 333L, 333L, 333L, 333L,

333L, 333L, 333L, 333L, 333L, 333L), return = c(25L, 25L,

21L, 37L, 23L, 27L, 19L, 7L, 16L, 12L, 33L, 24L, 6L, 14L,

4L, 25L, 90L, 27L, 3L, 16L, 7L, 1L, 13L, 11L, 36L, 5L, 6L,

14L, 11L, 41L, 11L, 6L, 4L, 11L, 3L, 6L, 21L, 41L, 28L, 30L,

92L, 4L, 1L, 83L, 3L, 16L, 4L, 25L, 25L, 21L, 37L, 23L, 27L,

19L, 7L, 16L, 12L, 33L, 24L, 6L, 14L, 4L, 25L, 90L, 27L,

3L, 16L, 7L, 1L, 13L, 11L, 36L, 5L, 6L, 14L, 11L, 41L, 11L,

6L, 4L, 11L, 3L, 6L, 21L, 41L, 28L, 30L, 92L, 4L, 1L, 83L,

3L, 16L, 4L), action = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,

0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,

0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L,

0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,

0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,

0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L,

0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("code",

"item", "return", "action"), class = "data.frame", row.names = c(NA,

-94L))

我有2组vars代码项 . 这里有两组:

123 234

222 333

我也有行动专栏 . 它只能有两个值(类别)零(0)或一(1) .

我需要通过返回列的零操作类别来计算 90 percentile ,它在一个操作类别之前 . 然后我需要计算 median 按返回列的零操作类别,它在一个操作类别之前 . (之后我们不触摸零)

这些统计数据必须在一类操作之前按14个零计算

然后我必须找到上面计算出的90%以上的值,然后这些值必须按计算的中值重复 .

在一类操作之后,再次为返回列返回零类别 . 对于它我也必须找到上面计算的90%以上的值,那么这个值必须用上面计算的中值(当计算14个零时)代替 .

注意 calculation 在一个操作类别之前由14个零完成,但是 replacing 按中位数完成所有 zero category 操作并为每个组执行 code+item

结果可以在输出列中 .

在这里更清楚所需的输出 .

对于 123+234 组,90 perc = 39,5 median = 12

对于 222+333 ,90 perc = 39,5 median = 12

code item return action output

1 123 234 25 0 25

2 123 234 25 0 25

3 123 234 21 0 21

4 123 234 37 0 16

5 123 234 23 0 23

6 123 234 27 0 27

7 123 234 19 0 19

8 123 234 7 0 7

9 123 234 16 0 16

10 123 234 12 0 12

11 123 234 33 0 33

12 123 234 24 0 24

13 123 234 6 0 6

14 123 234 14 0 14

15 123 234 4 0 4

16 123 234 25 0 25

17 123 234 90 0 **12**

18 123 234 27 0 27

19 123 234 3 0 3

20 123 234 16 0 16

21 123 234 7 0 7

22 123 234 1 0 1

23 123 234 13 0 13

24 123 234 11 0 11

25 123 234 36 0 36

26 123 234 5 0 5

27 123 234 6 0 6

28 123 234 14 0 14

29 123 234 11 0 11

30 123 234 41 0 16

31 123 234 11 1 Na

32 123 234 6 1 Na

33 123 234 4 1 Na

34 123 234 11 1 Na

35 123 234 3 0 3

36 123 234 6 0 6

37 123 234 21 0 21

38 123 234 41 0 **12**

39 123 234 28 0 28

40 123 234 30 0 30

41 123 234 92 0 **12**

42 123 234 4 0 4

43 123 234 1 0 1

44 123 234 83 0 **12**

45 123 234 3 0 3

46 123 234 16 0 16

47 123 234 4 0 4

48 222 333 25 0 25

49 222 333 25 0 25

50 222 333 21 0 21

51 222 333 37 0 16

52 222 333 23 0 23

53 222 333 27 0 27

54 222 333 19 0 19

55 222 333 7 0 7

56 222 333 16 0 16

57 222 333 12 0 12

58 222 333 33 0 33

59 222 333 24 0 24

60 222 333 6 0 6

61 222 333 14 0 14

62 222 333 4 0 4

63 222 333 25 0 25

64 222 333 90 0 **12**

65 222 333 27 0 27

66 222 333 3 0 3

67 222 333 16 0 16

68 222 333 7 0 7

69 222 333 1 0 1

70 222 333 13 0 13

71 222 333 11 0 11

72 222 333 36 0 36

73 222 333 5 0 5

74 222 333 6 0 6

75 222 333 14 0 14

76 222 333 11 0 11

77 222 333 41 0 16

78 222 333 11 1 Na

79 222 333 6 1 Na

80 222 333 4 1 Na

81 222 333 11 1 Na

82 222 333 3 0 3

83 222 333 6 0 6

84 222 333 21 0 21

85 222 333 41 0 **12**

86 222 333 28 0 28

87 222 333 30 0 30

88 222 333 92 0 **12**

89 222 333 4 0 4

90 222 333 1 0 1

91 222 333 83 0 **12**

92 222 333 3 0 3

93 222 333 16 0 16

94 222 333 4 0 4

**我标记的行,其中值由中位数重复 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值