gpt4 book ai didi

r - 在 R 数据框中添加一个新列,其值以另一列的值为条件

转载 作者:行者123 更新时间:2023-12-04 10:58:52 26 4
gpt4 key购买 nike

这个问题在这里已经有了答案:




8 年前关闭。




Possible Duplicate:
Assigning values to a df$column based on another column in the same df



假设我有数据框:
table<- data.frame(population=c(100, 300, 5000, 2000, 900, 2500), habitat=c(1,2,3,4,5,6))

现在我想添加一个新的列 table$size,如果人口<500,则为 1,如果 500<=人口<1000,则为 2,如果 1000<=人口<2000,则为 3,如果 2000<=人口<3000,则为 4,如果 3000,则为 5 <=人口<=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,并且我假设值不能大于该值。如果可以的话,你可以使用类似的东西
v <- c(-Inf,500,1000,2000,3000,5001,Inf) .

关于r - 在 R 数据框中添加一个新列,其值以另一列的值为条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13540080/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com