我有一个与已批准的贷款相关的属性数据框,正在等待审核或被拒绝。数据框中的一个属性字段是贷款申请所在的城镇。我想创建一个新的矩阵,其中包含行中的所有城镇名称以及已批准的贷款数量,等待审核或列中拒绝的数量。以下是说明性数据:
Town<-c("Andover","Cheshire", "Andover", "Burlington", "Albany", "Cheshire")
Status<-c("Approved","Declined", "Pending", "Pending", "Approved", "Declined")
ApplicationYear<-c(2013,2015,2014,2014,2015,2013)
Data<-data.frame(cbind(Town,Status,ApplicationYear))
Town Status ApplicationYear
1 Andover Approved 2013
2 Cheshire Declined 2015
3 Andover Pending 2014
4 Burlington Pending 2014
5 Albany Approved 2015
6 Cheshire Declined 2013
我可以按状态和城镇安排贷款计数,使用表格“for”每种状态类型然后cbind。
Approved<-table(Data[Data$Status=="Approved",]$Town)
Declined<-table(Data[Data$Status=="Declined",]$Town)
Pending<-table(Data[Data$Status=="Pending",]$Town)
cbind(Approved,Declined,Pending)
Approved Declined Pending
Albany 1 0 0
Andover 1 0 1
Burlington 0 0 1
Cheshire 0 2 0
但是,我想找到一种更优雅,更短的方法来使用for或other命令获得相同的结果。
答案 0 :(得分:2)
使用table(Data$Town, Data$Status)
功能,只需使用整列:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<head>
<!--[if IE 8]>
<meta http-equiv="X-UA-Compatible" content="IE=7">
<![endif]-->
我认为这是最简单的方法。