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