R - 从直方图数据中检索分布

时间:2013-08-06 10:17:35

标签: r dataframe histogram

我有这种数据框:

df<-data.frame(Value=c(0,1,2), A=c(3,2,0), B=c(1,4,2))

我想得到每个组(A,B)的值分布的向量,考虑到每列中的数字对应于每个“值”(来自直方图的数据)的出现次数。所以如果我在A列中有5为值1,我想在向量结果中有5个1(1,1,1,1,1)。在示例中,结果将是::

  A<-c(0,0,0,1,1)
  B<-c(0,1,1,1,1,2,2)

THX

1 个答案:

答案 0 :(得分:4)

您可以将功能apply()rep()结合起来。在rep()中,您使用A列和B列将time=设置为重复Value

apply(df[,-1],2,function(x) rep(df$Value,times=x))
$A
[1] 0 0 0 1 1

$B
[1] 0 1 1 1 1 2 2

更新

正如@Arun函数apply()所指出的,在应用函数之前将数据帧强制转换为矩阵,这是不必要的。在这种情况下,使用函数lapply()可以实现相同的结果,因为我们将函数应用于列。

lapply(df[,-1],function(x) rep(df$Value,times=x))
$A
[1] 0 0 0 1 1

$B
[1] 0 1 1 1 1 2 2