Как заменить значения inf на na в r
Для замены значений Inf значениями NA в R можно использовать следующие методы:
Способ 1: заменить Inf на NA в векторе
x[is. infinite (x)] <- NA
Способ 2. Замените Inf на NA во всех столбцах фрейма данных.
df[sapply(df, is. infinite )] <- NA
Способ 3. Замените Inf на NA в определенных столбцах фрейма данных.
df[c(' col1 ', ' col2 ')][sapply(df[c(' col1 ', ' col2 ')], is. infinite )] <- NA
В этом руководстве объясняется, как использовать каждый метод на практике со следующим фреймом данных:
#create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
position=c('G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'),
points=c(10, 10, 8, 14, 15, 15, 17, 17))
#view data frame
df
team position points
1 AG 10
2 AG 10
3AF 8
4 AF 14
5 BG 15
6 BG 15
7 BF 17
8 BF 17
Пример 1. Замените Inf на NA в векторе.
Следующий код показывает, как заменить все значения Inf значениями NA в векторе:
#create vector with some Inf values
x <- c(4, 12, Lower, 8, Lower, 9, 12, 3, 22, Lower)
#replace Inf values with NA
x[is. infinite (x)] <- NA
#view updated vector
x
[1] 4 12 NA 8 NA 9 12 3 22 NA
Обратите внимание, что все значения Inf из исходного вектора заменены значениями NA.
Пример 2. Замените Inf на NA во всех столбцах фрейма данных.
Следующий код показывает, как заменить значения Inf значениями NA в каждом столбце фрейма данных:
#create data frame
df <- data. frame (x=c(4, 5, 5, 4, Inf, 8, Inf),
y=c(10, Lower, Lower, 3, 5, 5, 8),
z=c(Inf, 5, 5, 6, 3, 12, 14))
#view data frame
df
X Y Z
1 4 10 Lower
2 5 Lower 5
3 5 Lower 5
4 4 3 6
5 Lower 5 3
6 8 5 12
7 Lower 8 14
#replace Inf values with NA values in all columns
df[sapply(df, is. infinite )] <- NA
#view updated data frame
df
X Y Z
1 4 10 NA
2 5 NA 5
3 5 NA 5
4 4 3 6
5 NA 5 3
6 8 5 12
7 NA 8 14
Обратите внимание, что значения Inf в каждом столбце фрейма данных были заменены значениями NA.
Пример 3. Замените Inf на NA в определенных столбцах фрейма данных.
Следующий код показывает, как заменить значения Inf значениями NA в определенных столбцах фрейма данных:
#create data frame
df <- data. frame (x=c(4, 5, 5, 4, Inf, 8, Inf),
y=c(10, Lower, Lower, 3, 5, 5, 8),
z=c(Inf, 5, 5, 6, 3, 12, 14))
#view data frame
df
X Y Z
1 4 10 Lower
2 5 Lower 5
3 5 Lower 5
4 4 3 6
5 Lower 5 3
6 8 5 12
7 Lower 8 14
#replace Inf values with NA values in columns 'x' and 'z' only
df[c(' x ', ' z ')][sapply(df[c(' x ', ' z ')], is. infinite )] <- NA
#view updated data frame
df
X Y Z
1 4 10 NA
2 5 Lower 5
3 5 Lower 5
4 4 3 6
5 NA 5 3
6 8 5 12
7 NA 8 14
Обратите внимание, что значения Inf в столбцах «x» и «y» заменены значениями NA.
Однако значения Inf в столбце «y» остались нетронутыми.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в R:
Как использовать is.na в R
Как использовать na.omit в R
Как заменить пробелы на NA в R