用通配符表达式替换dataframe中的值
也许解决方案很简单,但我找不到: 我有一个有两列的数据框——一列表示深度值,另一列表示密度值。应视为NA的密度值,其上附着有一个M(见下文) 我想用附加的M替换这些值;解决方案应如下所示:用通配符表达式替换dataframe中的值,r,regex,replace,R,Regex,Replace,也许解决方案很简单,但我找不到: 我有一个有两列的数据框——一列表示深度值,另一列表示密度值。应视为NA的密度值,其上附着有一个M(见下文) 我想用附加的M替换这些值;解决方案应如下所示: #desired output Depth Density 0.001 0.3 0.002 NA 0.003 0.33 这并没有给我想要的 df[df == "*M"] <- NA 我必须使用不同的通配符表达式吗?还是R将密度列视为问题的因素 提前感谢使用sub查找并替换值 > df$Dens
#desired output
Depth Density
0.001 0.3
0.002 NA
0.003 0.33
这并没有给我想要的
df[df == "*M"] <- NA
我必须使用不同的通配符表达式吗?还是R将密度列视为问题的因素
提前感谢使用
sub
查找并替换值
> df$Density <- as.numeric(sub(".*M", "NA", df$Density))
> df
Depth Density
1 0.001 0.30
2 0.002 NA
3 0.003 0.33
>df$密度df
深度密度
1 0.001 0.30
2 0.002 NA
3 0.003 0.33
使用sub
查找和替换值
> df$Density <- as.numeric(sub(".*M", "NA", df$Density))
> df
Depth Density
1 0.001 0.30
2 0.002 NA
3 0.003 0.33
>df$密度df
深度密度
1 0.001 0.30
2 0.002 NA
3 0.003 0.33
您可以简单地强制转换为数值,R将自动将非数值元素转换为NA。由于密度是(假设是)一个因素,我们需要首先将其强制为字符
df$Density <- as.numeric(as.character(df$Density))
# Warning message:
# NAs introduced by coercion
df
# Depth Density
# 1 0.001 0.30
# 2 0.002 NA
# 3 0.003 0.33
您可以简单地强制转换为数值,R将自动将非数值元素转换为
NA
。由于密度是(假设是)一个因素,我们需要首先将其强制为字符
df$Density <- as.numeric(as.character(df$Density))
# Warning message:
# NAs introduced by coercion
df
# Depth Density
# 1 0.001 0.30
# 2 0.002 NA
# 3 0.003 0.33
您的行应该是
read.table(file,na.strings=c(“na”,“M”))
但这也不起作用,因为na.strings
是文本匹配的。您的行应该是read.table(file,na.strings=c(“na”,“M”)
,但这也不起作用,因为na.strings
是字面匹配的
df$Density <- as.numeric(df$Density)