如何使用表输出在R中创建新列

时间:2015-08-29 14:56:54

标签: r

我有一些数据,我可以从中获得下表:

> table(d$Purpose, d$Good.Loan)

                    BadLoan GoodLoan
business                 34       63
car (new)                89      145
car (used)               17       86
domestic appliances       4        8
education                22       28
furniture/equipment      58      123
others                    5        7
radio/television         62      218
repairs                   8       14
retraining                1        8

我的问题是:从表格'表格的输出命令,是否可以使用" BadLoan"来获取/创建另一列。占总数的百分比?那就是我怎么能得到一个有[BadLoan /(BadLoan + GoodLoan)]的专栏。

2 个答案:

答案 0 :(得分:3)

我们可以将function copy(arr1, arr2) { for (var i = 0; i < arr1.length; ++i) { arr2[i] = arr1[i]; } } 输出转换为table并使用标准data.frame技术创建一个新的&#39}。列。

data.frame

数据

tbl <- table(d$Purpose, d$Good.Loan)
df1 <- as.data.frame.matrix(tbl)
df1$new <- with(df1, BadLoan/(BadLoan +GoodLoan))

答案 1 :(得分:3)

prop.table怎么样?

使用akrun的数据生成器:

> tbl <- table(d)
> tbl
       Good.Loan
Purpose BadLoan GoodLoan
      A       2        3
      B       1        3
      C       1        4
      D       2        3
      E       1        0

> p <- prop.table(table(d), margin=1)
> p
       Good.Loan
Purpose BadLoan GoodLoan
      A    0.40     0.60
      B    0.25     0.75
      C    0.20     0.80
      D    0.40     0.60
      E    1.00     0.00

根据akrun的建议,您可以使用cbind将其附加到表中(并将输出强制转换为矩阵):

> cbind(tbl, BadPercentage=p[,'BadLoan'])

  BadLoan GoodLoan BadPercentage
A       2        3          0.40
B       1        3          0.25
C       1        4          0.20
D       2        3          0.40
E       1        0          1.00