R分位数误差 - 替换有n行,数据有p

时间:2017-04-22 04:17:13

标签: r quantile

我正在尝试根据前30个百分位数,中间40个百分位数和底部30个百分位数创建一个特定变量(在代码中称为wt_avg)的分类。

例如 -

structure(list(x = 1:10, class = c(1, 1, 1, 2, 2, 2, 2, 3, 3, 
3)), .Names = c("x", "class"), row.names = c(NA, -10L), class = "data.frame")

其中“x”是数据,“class”是我想要的输出。

这是我正在使用的代码 -

sent_data$wt_avg = with(sent_data, SENT_Orth_1 + SENT_Orth_2 + SENT_Orth_3)
sent_data$state = quantile(sent_data$wt_avg, probs = c(0, 0.3, 0.7, 1) 
           na.rm = TRUE)

我收到以下错误 -

$<-.data.frame中的错误(*tmp*,“州”,值= c(-13.38,-2.9725,:替换有5行,数据有603

我该如何解决这个问题?谢谢!

1 个答案:

答案 0 :(得分:1)

我们可以在quantilecut

中使用findInterval
sent_data$newclass <- with(sent_data, findInterval(x, quantile(x,
         probs = c(0, 0.3, 0.7, 1)), rightmost.closed = TRUE))
sent_data
#    x class newclass
#1   1     1        1
#2   2     1        1
#3   3     1        1
#4   4     2        2
#5   5     2        2
#6   6     2        2
#7   7     2        2
#8   8     3        3
#9   9     3        3
#10 10     3        3