R에서 `replace()` 및 `is.na()`를 사용하여 값을 바꾸는 방법
소개
데이터 분석에서 데이터 세트에 있는 누락된 값, 음수 값 또는 정확하지 않은 값을 처리해야 할 수 있습니다. 이러한 문제는 값을 0
, NA
또는 평균으로 대체하여 해결할 수 있습니다.
이 기사에서는 R에서 replace()
및 is.na()
함수를 사용하는 방법을 살펴봅니다.
전제 조건
이 자습서를 완료하려면 다음이 필요합니다.
- R은 로컬 또는 서버에 설치됩니다.
벡터의 값을 replace()로 바꾸기
이 섹션에서는 벡터의 값을 대체하는 방법을 보여줍니다.
R 구문의 replace()
함수에는 벡터, 인덱스 벡터 및 대체 값이 포함됩니다.
replace(target, index, replacement)
먼저 벡터를 만듭니다.
df <- c('apple', 'orange', 'grape', 'banana')
df
이렇게 하면 apple
, orange
, 포도
및 바나나
가 포함된 벡터가 생성됩니다.
Output"apple" "orange" "grape" "banana"
이제 목록의 두 번째 항목을 바꾸겠습니다.
dy <- replace(df, 2, 'blueberry')
dy
이렇게 하면 orange
가 blueberry
로 대체됩니다.
Output"apple" "blueberry" "grape" "banana"
이제 목록의 네 번째 항목을 대체합니다.
dx <- replace(dy, 4, 'cranberry')
dx
이렇게 하면 바나나
가 크랜베리
로 대체됩니다.
Output"apple" "blueberry" "grape" "cranberry"
R에서 NA 값을 0으로 바꾸기
측정값을 포함하는 데이터 프레임이 있는 시나리오를 고려하십시오.
Ozone Solar.R Wind Temp Month Day
1 41 190 7.4 67 5 1
2 36 118 8.0 72 5 2
3 12 149 12.6 74 5 3
4 18 313 11.5 62 5 4
5 NA NA 14.3 56 5 5
6 28 NA 14.9 66 5 6
7 23 299 8.6 65 5 7
8 19 99 13.8 59 5 8
9 8 19 20.1 61 5 9
10 NA 194 8.6 69 5 10
11 7 NA 6.9 74 5 11
12 16 256 9.7 69 5 12
다음은 CSV 형식의 데이터입니다.
Ozone,Solar.R,Wind,Temp,Month,Day
41,190,7.4,67,5,1
36,118,8.0,72,5,2
12,149,12.6,74,5,3
18,313,11.5,62,5,4
NA,NA,14.3,56,5,5
28,NA,14.9,66,5,6
23,299,8.6,65,5,7
19,99,13.8,59,5,8
8,19,20.1,61,5,9
NA,194,8.6,69,5,10
7,NA,6.9,74,5,11
16,256,9.7,69,5,12
여기에는 데이터가 누락된 상황에 대해 "사용할 수 없음\에 대한 문자열 NA
가 포함됩니다.
NA
값을 0
으로 바꿀 수 있습니다.
먼저 데이터 프레임을 정의합니다.
df <- read.csv('air_quality.csv')
is.na()
를 사용하여 값이 NA
인지 확인합니다. 그런 다음 NA
값을 0
으로 바꿉니다.
df[is.na(df)] <- 0
df
이제 데이터 프레임은 다음과 같습니다.
Output Ozone Solar.R Wind Temp Month Day
1 41 190 7.4 67 5 1
2 36 118 8.0 72 5 2
3 12 149 12.6 74 5 3
4 18 313 11.5 62 5 4
5 0 0 14.3 56 5 5
6 28 0 14.9 66 5 6
7 23 299 8.6 65 5 7
8 19 99 13.8 59 5 8
9 8 19 20.1 61 5 9
10 0 194 8.6 69 5 10
11 7 0 6.9 74 5 11
12 16 256 9.7 69 5 12
데이터 프레임에서 NA
가 모두 교체되었습니다.
NA 값을 R 값의 평균으로 바꾸기
데이터 분석 과정에서 NA
값을 평균값으로 대체하여 정확도를 높이는 경우가 많습니다. mean()
함수는 평균값을 계산합니다.
이 상황을 극복하기 위해 NA
값을 나머지 값의 평균으로 대체합니다. 이 방법은 데이터 손실 없이 우수한 정확도를 생성하는 데 중요한 것으로 입증되었습니다.
NA
값이 있는 다음 입력 데이터 세트를 고려하십시오.
Ozone Solar.R Wind Temp Month Day
1 41 190 7.4 67 5 1
2 36 118 8.0 72 5 2
3 12 149 12.6 74 5 3
4 18 313 11.5 62 5 4
5 NA NA 14.3 56 5 5
6 28 NA 14.9 66 5 6
7 23 299 8.6 65 5 7
8 19 99 13.8 59 5 8
9 8 19 20.1 61 5 9
10 NA 194 8.6 69 5 10
11 7 NA 6.9 74 5 11
12 16 256 9.7 69 5 12
df <- read.csv('air_quality.csv')
is.na()
및 mean()
을 사용하여 NA
를 대체합니다.
df$Ozone[is.na(df$Ozone)] <- mean(df$Ozone, na.rm = TRUE)
먼저 이 코드는 Ozone
열에서 NA
의 모든 항목을 찾습니다. 다음으로 na.rm
인수가 있는 NA
값을 제외하고 Ozone
열에 있는 모든 값의 평균을 계산합니다. 그런 다음 NA
의 각 인스턴스는 계산된 평균으로 대체됩니다.
그런 다음 값을 정수로 round()
합니다.
df$Ozone <- round(df$Ozone, digits = 0)
이제 데이터 프레임은 다음과 같습니다.
Output Ozone Solar.R Wind Temp Month Day
1 41 190 7.4 67 5 1
2 36 118 8.0 72 5 2
3 12 149 12.6 74 5 3
4 18 313 11.5 62 5 4
5 21 NA 14.3 56 5 5
6 28 NA 14.9 66 5 6
7 23 299 8.6 65 5 7
8 19 99 13.8 59 5 8
9 8 19 20.1 61 5 9
10 21 194 8.6 69 5 10
11 7 NA 6.9 74 5 11
12 16 256 9.7 69 5 12
Ozone
열의 NA
값은 이제 Ozone
열(21
열 값의 반올림 평균으로 대체됩니다. >).
R에서 음수 값을 0 또는 NA로 바꾸기
데이터 분석 과정에서 데이터 프레임의 음수 값을 0
또는 NA
로 바꾸고 싶을 때가 있습니다. 이것은 결과의 부정적인 경향을 피하기 위해 필요합니다. 데이터 세트에 있는 음수 값은 분석을 오도하고 잘못된 정확도를 생성합니다.
음수 값이 있는 다음 입력 데이터 세트를 고려하십시오.
count entry1 entry2 entry3
1 1 345 -234 345
2 2 65 654 867
3 3 23 345 3456
4 4 87 876 9
5 5 2345 34 867
6 6 876 98 76
7 7 35 -456 123
8 8 87 98 345
9 9 -765 67 765
10 10 4567 -87 234
다음은 CSV 형식의 데이터입니다.
count,entry1,entry2,entry3
1,345,-234,345
2,65,654,867
3,23,345,3456
4,87,867,9
5,2345,34,867
6,876,98,76
7,35,-456,123
8,87,98,345
9,-765,67,765
10,4567,-87,234
CSV 파일을 읽습니다.
df <- read.csv('negative_values.csv')
음수 값을 0으로 바꾸기
replace()
를 사용하여 entry2
열의 음수 값을 0
으로 변경합니다.
data_zero <- df
data_zero$entry2 <- replace(df$entry2, df$entry2 < 0, 0)
data_zero
이제 데이터 프레임은 다음과 같습니다.
Output count entry1 entry2 entry3
1 1 345 0 345
2 2 65 654 867
3 3 23 345 3456
4 4 87 867 9
5 5 2345 34 867
6 6 876 98 76
7 7 35 0 123
8 8 87 98 345
9 9 -765 67 765
10 10 4567 0 234
entry2
열의 음수 값이 0
으로 대체되었습니다.
음수 값을 NA로 바꾸기
replace()
를 사용하여 entry2
열의 음수 값을 NA
로 변경합니다.
data_na <- df
data_na$entry2 <- replace(df$entry2, df$entry2 < 0, NA)
data_na
이제 데이터 프레임은 다음과 같습니다.
Output count entry1 entry2 entry3
1 1 345 NA 345
2 2 65 654 867
3 3 23 345 3456
4 4 87 867 9
5 5 2345 34 867
6 6 876 98 76
7 7 35 NA 123
8 8 87 98 345
9 9 -765 67 765
10 10 4567 NA 234
entry2
열의 음수 값이 NA
로 대체되었습니다.
결론
데이터 프레임의 값을 바꾸는 것은 데이터 분석을 위해 R에서 사용할 수 있는 편리한 옵션입니다. R에서 replace()
를 사용하면 NA
, 0
및 적절한 경우 음수 값을 전환하여 분석을 위해 대규모 데이터 세트를 정리할 수 있습니다.
R에서 sub()
및 gsub()
를 사용하는 방법으로 계속 학습하세요.