生成五分位数并在R中重新编码多个变量

时间:2017-01-08 18:41:44

标签: r dplyr

我有33列/变量,值不同。我想要做的是:为所有变量生成五分位数(完成),然后使用五分位数重新编码每个变量(-2,-1,0,1,2)的五分位数,我生成的五分位数使用:

q <- apply(ndataframe[2:34], 2, quantile, c(.2, .4, .6, .8, 1), na.rm = T)

每个变量都有不同的比例,这就是五分值不同的原因。我假设有一个更好,更有效的方法,然后通过五分之一重新编码,而不是我一直在使用五分位数值并逐个手动重新编码每一列,例如:

n_df_quins$A_q <- recode(n_dataframe$A
                   "0:1529 = '-2'; 1530:2199 = '-1'; 2200:2999 = '0'; 3000:3999 = '1'; 4000:25000 = '2'")

非常感谢任何人提供的任何帮助。

1 个答案:

答案 0 :(得分:2)

您可以使用percent_rank并为每列中的每个观察值创建一个具有百分位值的新数据集,然后根据您可以一次性应用于整个数据集的条件编写一个重新编码的函数mutate_all。以下是代码:

library("dplyr")
df<- data.frame(var1 = c(1:100), var2 = sample(1:1000, 100))
df1<- mutate_all(df, percent_rank)
recode_new<- function(x)
{
x = ifelse(x<=.2, -2, ifelse(x<=.4, -1, ifelse(x<=.6,0, ifelse(x<.8,1,2))))
return(x)
}
df_final<- mutate_all(df1, recode_new)

如果您有任何疑问,请告诉我