Если какое-либо значение присутствует в столбце Dataframe, измените значение на 1, иначе вставьте 0 - PullRequest
0 голосов
/ 08 марта 2020

У меня есть фрейм данных с около 1000 строк и 1000 столбцов. Что я хочу сделать, так это то, что если какое-либо значение присутствует в какой-либо ячейке информационного кадра, то измените значение на 1 или же поместите 0 в эту ячейку. Я программирую на R, поэтому код R был бы оценен. Я не хочу, чтобы значение столбца T изменилось, а только для остальных столбцов.

Например

У меня есть такой кадр данных:

TAB C D

1 29 90 0 100

2 30 12 76 0

3 0 12 0 32

преобразовать его в:

TAB C D

1 1 1 0 1

2 1 1 1 0

3 0 1 0 1

Ответы [ 2 ]

0 голосов
/ 08 марта 2020

Чтобы игнорировать первый столбец, вы можете объединить его с простой модификацией первого решения akrun. Например,

data.frame(df[, 1, drop=FALSE], +(df[,-1] != 0))
0 голосов
/ 08 марта 2020

Мы можем преобразовать в логическую матрицу и привести ее к integer

df1 <- +(df != 0)

Или с помощью replace

replace(df, df != 0, 1)

Если нам нужно сделать это без первого столбец

df[-1] <- +(df[-1] != 0)

Или с sapply

+(sapply(df, `!=`, 0))

В tidyverse мы можем использовать mutate_all

library(dplyr)
df <- df %>%
          mutate_all(~ as.integer(. != 0))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...