【问题标题】:Discretize matrix in R according to classification rule [duplicate]根据分类规则离散R中的矩阵[重复]
【发布时间】:2018-05-01 20:07:23
【问题描述】:

我的矩阵由数字组成:

set.seed(2016)
A <- matrix(rnorm(4,250,50), nrow = 2, ncol = 2, byrow = TRUE)

我想将它们离散化为 3 个类:lmh &lt;- c("low", "moderate", "high")

low: <30
medium: 30 - 300
high >300

如果不将矩阵转换为data.frame 并且不使用循环,这是否可行?

这似乎是一项非常容易的任务,但我找不到任何东西。

【问题讨论】:

  • @9Jan 我两个都需要
  • ?cutcut(A, breaks = c(-Inf, 30, 300, Inf), labels = c("low", "moderate", "high"))。将结果分配给A[] &lt;- as.character(cut(...)) 以保留维度并生成character 矩阵。如果您不想覆盖A,请交替使用result = matrix(as.character(cut(...), nrow = nrow(A))
  • 输出应该是一个矩阵

标签: r matrix


【解决方案1】:
library(dplyr)
case_when(A < 30   ~ 'low'
        , A <= 300 ~ 'medium'
        , T        ~ 'high') %>% 
  `dim<-`(dim(A))

或者

A %>% 
  cut(breaks = c(-Inf, 30, 300, Inf), labels = c("low", "med", "high")) %>% 
  `dim<-`(dim(A))

【讨论】:

    猜你喜欢
    • 2020-07-06
    • 1970-01-01
    • 1970-01-01
    • 2016-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多