使用prop.table时保持字符列

时间:2018-09-20 23:48:04

标签: r

假设我有一个这样的数据框:

data <- data.frame(
  sent = letters[1:5],
  n.x = abs(rnorm(5)),
  n.y = abs(rnorm(5))
)

如果我将其强制转换为矩阵,然后使用prop.table

prop.table(data.matrix(data), 2)

我得到以下信息:

           sent       n.x       n.y
[1,] 0.06666667 0.0948657 0.1665655
[2,] 0.13333333 0.1042308 0.2598814
[3,] 0.20000000 0.3516696 0.2230854
[4,] 0.26666667 0.2617903 0.1438551
[5,] 0.33333333 0.1874436 0.2066125

如何将第一列保留为字符向量?

1 个答案:

答案 0 :(得分:2)

如果我理解正确,那么您真正想要的是

data <- data.frame(
    sent = letters[1:5],
    n.x = abs(rnorm(5)),
    n.y = abs(rnorm(5))
)

cbind(data[1], prop.table(data.matrix(data[-1]), 2))

  sent          n.x        n.y
1    a 0.0004247739 0.17667990
2    b 0.1748003178 0.30665196
3    c 0.1361206704 0.17707674
4    d 0.6359362530 0.25927624
5    e 0.0527179849 0.08031516