1

我有一个带有数值的数据框,称为浓度。

Concentration
700657  
850789  
900123  
1011234  
750001

我想添加一个新列 CDrange,其值为 700k+、800k+、900k+、1000k+。新列中的值将根据浓度值进行分配,例如如果值为 700657,则计算值应为 700k+,如果值为 850789,则值为 800k+,以此类推。如何在不使用 if else 循环的情况下编写函数。新列应如下所示

Concentration       CDrange          
700657              700k+ 
850789              800k+ 
900123              900k+ 
1011234             1000k+ 
750001              700k+

请提供一些关于如何进行的建议。我曾尝试使用子集函数,但我无法将数据框保持在一起。

4

2 回答 2

3

?cut?findInterval

df$CDrange <- cut(df$Concentration, c(700000, 800000, 900000, 1000000, Inf),
                  labels=c("700k+","800k+","900k+","1000k+") right=FALSE)
于 2013-07-30T19:49:20.357 回答
2

检查这个例子:

x <- c(800000, 800001, 800999, 1234567)
paste0(x %/% 1000, ifelse((x %% 1000)>0, "k+", "k"))

#[1] "800k"   "800k+"  "800k+"  "1234k+"
于 2013-07-30T19:51:23.357 回答