Страница 1 из 1

Исправить значения в нескольких колонках фрэйма

Добавлено: 13 июн 2020, 21:31
VistaSV30
Добрый вечер!

Имеется data.frame

Код: Выделить всё

t1 <- sample(100, 10)
t2 <- sample(100, 10)

dt <- rbind(t1, t2)
Где-то видел, что в R можно исправить значения сразу в нескольких колонках.
Например, мне нужно проверить если в колонках с 5 по 8 есть значения больше 20 то исправить их на 20.

Спасибо!

Re: Исправить значения в нескольких колонках фрэйма

Добавлено: 14 июн 2020, 10:04
nickleb
По коду Вашему dt - матрица, поэтому самое место apply.
Если подробно и с проверкой, то:

Код: Выделить всё

class(dt)

is.matrix(dt)

dt[,5:8]

dt[,5:8] <- apply(X= dt[,5:8], 
                  MARGIN = c(1,2), 
                  FUN = function (z) {
                    ifelse(z > 20, 20, z)
                    }
                  )

dt[,5:8]

dt

Re: Исправить значения в нескольких колонках фрэйма

Добавлено: 14 июн 2020, 10:40
nickleb
... если же сделать-таки data.frame:

Код: Выделить всё

dt <- data.frame(rbind(t1, t2))
, то apply-код, что дан выше также не спотыкается, по-моему...

Re: Исправить значения в нескольких колонках фрэйма

Добавлено: 14 июн 2020, 15:38
gamm

Код: Выделить всё

> m=matrix(1:12,ncol=4,nrow=3,byrow=TRUE)
> m
     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
[2,]    5    6    7    8
[3,]    9   10   11   12
> ind<-m[,3:4] > 7
> ind
      [,1]  [,2]
[1,] FALSE FALSE
[2,] FALSE  TRUE
[3,]  TRUE  TRUE
> m[,3:4][ind] = 7
> m
     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
[2,]    5    6    7    7
[3,]    9   10    7    7

Re: Исправить значения в нескольких колонках фрэйма

Добавлено: 14 июн 2020, 22:08
VistaSV30
Спасибо друзья!
Оба варианта работают как надо!
Работают и с matrix и с data.frame.

Спасибо еще раз!