2017-08-07 97 views
0

我有以下格式的数据。将值范围转换为名称

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

我想将范围内的值更改为名称。举例来说,如果贷款为10000介于0和它应有的名字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

你的数据帧(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 

注意IDfactor变量而不是一个字符变量为好,这是值得记住当你继续你的分析,因为他们在如何可以操作不同上。

+0

简单的修复,谢谢。 – Eitan