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

标签 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'")

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

最佳答案

您可以使用 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)

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

关于r - 在 R 中生成五分位数并重新编码多个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41536394/

相关文章:

r - dplyr 在 case_when 中用分号分隔

r - 在 R 中切片数据帧的第二半

R 中 tidyr::complete 的 Python 等价物,允许指定附加值

R:从具有重复制表符的制表符分隔文件中读取数据

r - 如何在带有公式而不是 .dots 和 mutate_ 的函数中使用 mutate?

r - 根据前一组计算的另一个值传播值

r - 选定列的 mutate_each

r - 使用 lda 函数在 R 中进行简单判别分析失败

读取文件列表,应用函数并用同名重写

R Notebook 不显示数据框的代码输出