R 将特定范围的数字替换为NA
我正在处理一个数据帧,它的一列中有一些不可接受的数字。我想知道如何用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,]
> 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列