Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.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
R数据帧-将数字列中的字转换为零_R_Dataframe - Fatal编程技术网

R数据帧-将数字列中的字转换为零

R数据帧-将数字列中的字转换为零,r,dataframe,R,Dataframe,我有一个包含名称列和值列的数据框: a <- c("Bob","Jane","Susan","Greg") b <- c(10, "Jane", 14, "Greg") df = data.frame(a,b) df a b 1 Bob 10 2 Jane Jane 3 Susan 14 4 Greg Greg 提前谢谢 我不是R专家,但我相信,根据上面的评论,df$b=as.numeric(gsub([^0-9],“0”,df$b))可以正常工作

我有一个包含名称列和值列的数据框:

a <- c("Bob","Jane","Susan","Greg")
b <- c(10, "Jane", 14, "Greg")
df = data.frame(a,b)
df
      a    b
1   Bob   10
2  Jane Jane
3 Susan   14
4  Greg Greg

提前谢谢

我不是R专家,但我相信,根据上面的评论,
df$b=as.numeric(gsub([^0-9],“0”,df$b))
可以正常工作

更具体地说,将代码更改为:

a <- c("Bob","Jane","Susan","Greg")
b <- c(10, "Jane", 14, "Greg")
df = data.frame(a,b)
df$b = as.numeric(gsub("[^0-9]", "0", df$b))
df

a我会强制
b
numeric
,并保持不变。因为
b
最初是一个
因子
,所以我首先将其强制为
字符

df$b = as.numeric(as.character(df$b))
#Warning message:
#NAs introduced by coercion 
df$b
#[1] 10 NA 14 NA
gsub(pattern = "\\D+", replacement = "0", x = df$b)
#[1] "10" "0"  "14" "0" 
如果您愿意的话,还可以用
0
替换
NA
(但我只保留
NA

当然,您可以使用
gsub
将非数字字符(
\\D+
)替换为
“0”
。请注意,
gsub
自动强制为
字符

df$b = as.numeric(as.character(df$b))
#Warning message:
#NAs introduced by coercion 
df$b
#[1] 10 NA 14 NA
gsub(pattern = "\\D+", replacement = "0", x = df$b)
#[1] "10" "0"  "14" "0" 
请尝试使用
df$b=as.numeric(gsub(“[^0-9]”,“0”,df$b))
ifelse(grepl('\\D',df$b),0,df$b)
,也可以使用,但只有在
df$b
未存储为因子时才可以使用。