我有一个带有colmn的数据框,称为浓度和数值。
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+
请提供有关如何进行的一些建议。我尝试使用子集函数,但我无法将数据帧保持在一起。
答案 0 :(得分:3)
请参阅?cut
和?findInterval
。
df$CDrange <- cut(df$Concentration, c(700000, 800000, 900000, 1000000, Inf),
labels=c("700k+","800k+","900k+","1000k+") right=FALSE)
答案 1 :(得分:2)
检查此示例:
x <- c(800000, 800001, 800999, 1234567)
paste0(x %/% 1000, ifelse((x %% 1000)>0, "k+", "k"))
#[1] "800k" "800k+" "800k+" "1234k+"