Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用prop.table时维护字符列_R - Fatal编程技术网

使用prop.table时维护字符列

使用prop.table时维护字符列,r,R,假设我有这样一个数据帧: data <- data.frame( sent = letters[1:5], n.x = abs(rnorm(5)), n.y = abs(rnorm(5)) ) 我得到以下信息: sent n.x n.y [1,] 0.06666667 0.0948657 0.1665655 [2,] 0.13333333 0.1042308 0.2598814 [3,] 0.20000000 0.3516696

假设我有这样一个数据帧:

data <- data.frame(
  sent = letters[1:5],
  n.x = abs(rnorm(5)),
  n.y = abs(rnorm(5))
)
我得到以下信息:

           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

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

如果我理解正确,您实际需要的是

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

data刚刚做了一个小测试:随着数据变得越来越大(越来越宽,越来越长),使用
cbind(数据[1],lapply(数据[-1],属性表)
会更快,内存效率更高,因为它不会创建新的矩阵
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