如何在R中使用replace(.)将 Dataframe 中的某些值替换为NA

wfypjpf4  于 2023-07-31  发布在  其他
关注(0)|答案(2)|浏览(85)

我有一个600x14维的 Dataframe ,我需要在R中使用replace(.)命令,将某列中的某些值替换为NA。这些值是我用NA掩蔽的离群值。列的名称称为Response.Size, Dataframe 的名称称为mydata。需要用NA替换的感兴趣的数据点在第54、146和239行,它们的对应值分别是206952、198146和135523。
这是我第一次使用R Studio,所以我有点困惑。我已经尝试使用r eplace(.)命令,但似乎无法获得它。如果你能帮忙的话

k97glaaz

k97glaaz1#

试试这个

> df
  X1     X2 X3
1  0      0  0
2  0      0  0
3  0 206952  0
4  0      0  0
5  0 198146  0
6  0      0  0
7  0 135523  0
> df$X2 <- replace(x=df$X2, list=df$X2 %in% c(206952, 198146, 135523), values=NA)
> df
  X1 X2 X3
1  0  0  0
2  0  0  0
3  0 NA  0
4  0  0  0
5  0 NA  0
6  0  0  0
7  0 NA  0

字符串

  • 数据:*
df <- structure(list(X1 = c(0, 0, 0, 0, 0, 0, 0), X2 = c(0, 0, 206952, 
0, 198146, 0, 135523), X3 = c(0, 0, 0, 0, 0, 0, 0)), row.names = c(NA, 
-7L), class = "data.frame")

irtuqstp

irtuqstp2#

已经有一个公认的答案,但这里是另一个基R,但是,尽管问题特别要求replace解决方案,但这是一个is.na<-解决方案。函数的RHS是一个合适的索引向量,在本例中是由%in%返回的逻辑向量。
数据来自jay.sf's accepted answer

df <- structure(list(X1 = c(0, 0, 0, 0, 0, 0, 0), 
                     X2 = c(0, 0, 206952, 0, 198146, 0, 135523), 
                     X3 = c(0, 0, 0, 0, 0, 0, 0)), 
                row.names = c(NA, -7L), class = "data.frame")

is.na(df$X2) <- df$X2 %in% c(206952, 198146, 135523)
df
#>   X1 X2 X3
#> 1  0  0  0
#> 2  0  0  0
#> 3  0 NA  0
#> 4  0  0  0
#> 5  0 NA  0
#> 6  0  0  0
#> 7  0 NA  0

字符串
创建于2023-07-23带有reprex v2.0.2

相关问题