Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用通配符表达式替换dataframe中的值_R_Regex_Replace - Fatal编程技术网

用通配符表达式替换dataframe中的值

用通配符表达式替换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

也许解决方案很简单,但我找不到:

我有一个有两列的数据框——一列表示深度值,另一列表示密度值。应视为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$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)