可能重复:
根据同一df中的另一列将值分配给df $列
假设我有数据框:
table<- data.frame(population=c(100, 300, 5000, 2000, 900, 2500), habitat=c(1,2,3,4,5,6))
现在我想添加一个新的列表$ size,其中值为1,如果人口<500,则2如果500 <=人口<1000,3则如果1000 <=人口<2000,4则如果2000 <=人口<3000,则如果3000 <=人口<= 5000
我只知道如何使用另一列中的值创建具有二进制TRUE/FALSE结果的列,例如
table$size <- (table$population<1000) 
但我不确定是为了获得不同条件的不同数字.任何人都可以提供帮助吗?
首先不要打电话data.frame table,因为table是基本功能.
你可以使用findInterval:
df <- data.frame(population=c(100, 300, 5000, 2000, 900, 2500), 
                 habitat=c(1,2,3,4,5,6))
v <- c(-Inf,500,1000,2000,3000,5000)
df$size <- findInterval(df$population,v,all.inside = TRUE)
  population habitat size
1        100       1    1
2        300       2    1
3       5000       3    5
4       2000       4    4
5        900       5    2
6       2500       6    4
我用过,all.inside = TRUE因为你想将5000定义为5,我认为值不能大于5.如果他们可以,你可以使用类似的东西
v <- c(-Inf,500,1000,2000,3000,5001,Inf).
| 归档时间: | 
 | 
| 查看次数: | 18964 次 | 
| 最近记录: |