R根据数值替换数据框中的数字

时间:2014-02-25 00:09:03

标签: r replace conditional

我的数据框的数字如下:

28521 59385 58381

V7220 25050 V7231

我需要根据以下条件更换它们: 如果数字大于59380且小于59390,则将其编码为1 删除号码以“v”开头

所以框架工作看起来像

28521 1 1

NA 25050 NA

如何快速完成庞大的数据框架?

2 个答案:

答案 0 :(得分:1)

编写一个函数,然后在转换为数字后将其应用于矩阵/ data.frame的列,以除去那些V条目。

sapply(df,as.numeric)
# If you have factor instead of character
sapply(df,function(x) as.numeric(as.character(x)))

replace <- function(x) {
x[x >= 59380 & x <= 59390] <- 1
return(x)
}

答案 1 :(得分:1)

x <- c(28521, 59385, 58381, 'V7220', 25050, 'V7231')

as.numeric(ifelse(as.numeric(x) > 59380 & as.numeric(x) < 59390, 1, x))

这将返回有关NA值的警告消息,但如果您使用suppressWarnings打包,则会得到您想要的内容。

> suppressWarnings(as.numeric(ifelse(as.numeric(x) > 59380 & as.numeric(x) < 59390, 1, x)))
[1]  28521     1 58381    NA 25050    NA