Страница 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:
, то
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.
Спасибо еще раз!