4

我有这种数据框:

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

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

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

谢谢

4

1 回答 1

4

您可以将函数apply()rep(). 在rep()您使用列 A 和 B 设置time=为 repeat 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
于 2013-08-06T10:23:52.763 回答