我有 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/