R 将特定范围的数字替换为NA

R 将特定范围的数字替换为NA,r,dataframe,mean,na,R,Dataframe,Mean,Na,我正在处理一个数据帧,它的一列中有一些不可接受的数字。我想知道如何用R中的NA值替换特定范围内的数字? 比如说 > V1 <- c(23,2,4) > V2 <- c(7,2,9) > V3 <- c(23,2,9) > df <- data.frame(V1, V2, V3) V1 V2 V3 [1,] 23 7 23 [2,] 2 2 2 [3,]

我正在处理一个数据帧,它的一列中有一些不可接受的数字。我想知道如何用R中的NA值替换特定范围内的数字? 比如说

> V1 <- c(23,2,4)
> V2 <- c(7,2,9)
> V3 <- c(23,2,9)
> df <- data.frame(V1, V2, V3)
    
           V1   V2   V3
    [1,]   23    7   23
    [2,]    2    2    2
    [3,]    4    9    9
第一列的平均值为(2+4)/2=3

library(dplyr)
#Code
mat <- matrix(c(23,2,4,7,2,9,23,2,9), ncol = 3)
mat <- as.data.frame(mat)
#Solution for replace
mat %>% mutate(V1=ifelse(V1>20,NA,V1)) %>%
  colMeans(.,na.rm=T)
也许可以试试这个:

library(dplyr)
#Code
mat <- matrix(c(23,2,4,7,2,9,23,2,9), ncol = 3)
mat <- as.data.frame(mat)
#Solution for replace
mat %>% mutate(V1=ifelse(V1>20,NA,V1)) %>%
  colMeans(.,na.rm=T)

我们可以使用
base R
来执行此操作。将第一列中大于20的元素替换为
NA
,并获得
平均值

df[,1][df[,1] > 20] <- NA 
mean(df[,1], na.rm = TRUE)
#[1] 3
或者在一行中

mean(df[,1][df[,1] <= 20], na.rm = TRUE)
#[1] 3

mean(df[,1][df[,1]我们可以使用
base R
来执行此操作。将第一列中大于20的元素替换为
NA
,并获得
平均值

df[,1][df[,1] > 20] <- NA 
mean(df[,1], na.rm = TRUE)
#[1] 3
或者在一行中

mean(df[,1][df[,1] <= 20], na.rm = TRUE)
#[1] 3
平均值(df[,1][df[,1]基准R溶液:

colMeans(within(df, {V1 <- replace(V1, V1 > 20, NA_integer_)}), na.rm = TRUE)
colMeans(在(df,{v120,NA_整数})内),NA.rm=TRUE)
基本R解决方案:

colMeans(within(df, {V1 <- replace(V1, V1 > 20, NA_integer_)}), na.rm = TRUE)
colMeans(在(df,{v120,NA_整数})内),NA.rm=TRUE)

您需要
mat[,1][mat[,1]>20]我正在处理一个数据帧,有什么方法可以实现您在数据帧上提到的功能吗?是的,该代码也应该适用于data.frame列您需要
mat[,1][mat 1]>20]我处理的是一个数据框,有没有办法实现您在数据框中提到的功能?是的,代码也应该适用于data.frame列