R:从两个不同的数值向量创建一个因子'值

时间:2016-01-17 13:47:39

标签: r

作为R的新手,我遇到了这个数据操作问题: 我需要创建一个从4个级别到两个数值向量的因子(启用,限制)。后者是因子得分。

4个级别应为:

  • 等级1 =数据$启用>中位数(数据$启用)& data $ restrict>中位数(数据$限制)

  • 2级=数据$ enable<中位数(数据$启用)& data $ restrict>中位数(数据$ restrict)

以及以下两种组合。我也想标记关卡。 我不知道如何将它嵌套在factor()函数中。

有任何帮助吗? 谢谢

1 个答案:

答案 0 :(得分:1)

一种选择是使用嵌套的ifelse

with(data, 
   ifelse(enable > median(enable)  & restrict  > median(restrict),1, 
   ifelse(enable < median(enable) & restrict > median(restrict), 2, 
   ifelse(enable > median(enable) & restrict < median(restrict), 3,
      4))))
#[1] 2 4 1 2 3 1 4 3 1 4

或者另一种选择是获取数据集的colMedians(来自library(matrixStats)),检查数据是否大于列中位数,将逻辑索引加1以将其转换为1/2值,paste列在一起,转换为factor,然后根据需要可以强制转换为numeric

library(matrixStats)
factor(do.call(paste0,  as.data.frame((data >
      colMedians(as.matrix(data))[col(data)])+1L)))

数据

set.seed(24)
data <- data.frame(enable = sample(20, 10, replace=TRUE),
           restrict = sample(20, 10, replace=TRUE))