IT干货网

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

sxdcgaq8080 2024年10月01日 编程设计 66 0

我有这样的数据框:

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) 

谢谢

请您参考如下方法:

您可以组合功能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 


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!