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
未存储为因子时才可以使用。