作为R的新手,我遇到了这个数据操作问题: 我需要创建一个从4个级别到两个数值向量的因子(启用,限制)。后者是因子得分。
4个级别应为:
等级1 =数据$启用>中位数(数据$启用)& data $ restrict>中位数(数据$限制)
2级=数据$ enable<中位数(数据$启用)& data $ restrict>中位数(数据$ restrict)
以及以下两种组合。我也想标记关卡。 我不知道如何将它嵌套在factor()函数中。
有任何帮助吗? 谢谢
答案 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))