我的数据框的数字如下:
28521 59385 58381
V7220 25050 V7231
我需要根据以下条件更换它们: 如果数字大于59380且小于59390,则将其编码为1 删除号码以“v”开头
所以框架工作看起来像
28521 1 1
NA 25050 NA
如何快速完成庞大的数据框架?
答案 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