반응형
데이터 프레임에서 문자 값을 NA로 바꾸기
나는 (임의의 장소에) "foo"
내가 NA
.
전체 데이터 프레임에서이를 수행하는 가장 좋은 방법은 무엇입니까?
이:
df[ df == "foo" ] <- NA
싹을 뜯어내는 한 가지 방법은 처음에 데이터를 읽을 때 해당 문자를 NA로 변환하는 것입니다.
df <- read.csv("file.csv", na.strings = c("foo", "bar"))
또 다른 옵션은 is.na<-
다음과 같습니다.
is.na(df) <- df == "foo"
그것의 사용은 다소 직관적이지 않은 것처럼 보일 수 있지만 실제로 는 오른쪽의 인덱스에 값을 할당 NA
합니다 df
.
이것은 dplyr::mutate_all()
및 replace
다음 으로 수행 할 수 있습니다 .
library(dplyr)
df <- data_frame(a = c('foo', 2, 3), b = c(1, 'foo', 3), c = c(1,2,'foobar'), d = c(1, 2, 3))
> df
# A tibble: 3 x 4
a b c d
<chr> <chr> <chr> <dbl>
1 foo 1 1 1
2 2 foo 2 2
3 3 3 foobar 3
df <- mutate_all(df, funs(replace(., .=='foo', NA)))
> df
# A tibble: 3 x 4
a b c d
<chr> <chr> <chr> <dbl>
1 <NA> 1 1 1
2 2 <NA> 2 2
3 3 3 foobar 3
또 다른 dplyr
옵션은 다음과 같습니다.
df <- na_if(df, 'foo')
를 사용하여 dplyr::na_if
특정 값을 NA
. 이 경우 "foo"
.
library(dplyr)
set.seed(1234)
df <- data.frame(
id = 1:6,
x = sample(c("a", "b", "foo"), 6, replace = T),
y = sample(c("c", "d", "foo"), 6, replace = T),
z = sample(c("e", "f", "foo"), 6, replace = T),
stringsAsFactors = F
)
df
#> id x y z
#> 1 1 a c e
#> 2 2 b c foo
#> 3 3 b d e
#> 4 4 b d foo
#> 5 5 foo foo e
#> 6 6 b d e
na_if(df$x, "foo")
#> [1] "a" "b" "b" "b" NA "b"
If you need to do this for multiple columns, you can pass "foo"
through from mutate_at
.
df %>%
mutate_at(vars(x, y, z), na_if, "foo")
#> id x y z
#> 1 1 a c e
#> 2 2 b c <NA>
#> 3 3 b d e
#> 4 4 b d <NA>
#> 5 5 <NA> <NA> e
#> 6 6 b d e
One alternate way to solve is below:
for (i in 1:ncol(DF)){
DF[which(DF[,i]==""),columnIndex]<-"ALL"
FinalData[which(is.na(FinalData[,columnIndex])),columnIndex]<-"ALL"
}
참고URL : https://stackoverflow.com/questions/3357743/replacing-character-values-with-na-in-a-data-frame
반응형
'programing' 카테고리의 다른 글
CSS : 완전히 새로운 행을 수행하도록 float 강제 (0) | 2020.12.14 |
---|---|
SQL Server 쿼리에서 주말을 제외하려면 어떻게합니까? (0) | 2020.12.14 |
jquery : event.stopImmediatePropagation () 대 반환 false (0) | 2020.12.14 |
Android에서 URL의 이미지를 표시하는 방법 (0) | 2020.12.14 |
kubectl 구성에서 클러스터와 컨텍스트를 삭제하려면 어떻게해야합니까? (0) | 2020.12.14 |