将值范围转换为名称

时间:2017-08-07 15:28:42

标签: r binning

我的数据格式如下。

ID LoanAmtBin
1  20000
2  120000 
3  90000
4  50000
5  50000

我想将范围内的值更改为名称。例如,如果贷款介于0和10,000之间,则其名称应为10K,如果介于10,001和25,000之间,则应具有25K名称等。

所需的表格:

ID LoanAmtBin
1  25K
2  250K 
3  100K
4  50K
5  50K

我已经将LoanAmtBin列转换为数字。然后我使用以下代码行将每个值转换为名称。

LAmtCut <- cut(cleancc$LoanAmtBin, breaks = c(0, 10000, 25000, 50000, 100000, 250000, 500000, 1000000),
           labels = c("10K", "25K", "50K", "100K", "250K", "500K", "1Mil"))

当我运行LAmtCut时,它会在控制台中显示我想要的标签。但是,我的数据框中的列没有变化。如何更改数据框中的值?

1 个答案:

答案 0 :(得分:1)

您的数据框(DF)没有变化的原因是因为cut函数输出了一个向量,但您并未将该输出分配回DF中的列。如果要更新DF,则需要将结果分配回列。您可以使用$运算符来执行此操作。

示例:

test <- data.frame(ID = c(10000, 20000, 20000, 30000, 30000, 40000))

# outputs a factor vector
labs <- cut(test$ID, breaks = c(0, 10000, 20000, 30000, 40000, 50000), 
    labels = c("10k", "20k", "30k", "40k", "50k"))

# updates the data frame
test$ID <- labs

请注意,ID是一个factor变量,而不是字符变量,在您继续分析时要记住这一点,因为它们的操作方式不同。