重塑直方图的数据(multhist)

时间:2015-11-30 14:13:53

标签: r dataframe histogram reshape

我想将我的数据转换成彼此相邻的不同直方图(可能是multhist)。 我的数据现在看起来像:

    Code Pt
     0   5
     0   0
     0   2 
     1   0
     1   3
     1   1
    30   0
    30   6
    30   2

等等。 每个代码编号代表一个物种,我想绘制每个物种(代码编号)彼此相邻的Pt的直方图。 因此,我希望将数据重新整形为:

    Code Pt
     0   5
     0   5
     0   5
     0   5
     0   5
     0   0
     0   2
     0   2
     1   0
     1   3
     1   3
     1   3

等等。

我已经尝试了

    hp<-read.table("C:/Users/file.csv", header=T, sep=";")
    hp$Code<-as.factor(hp$Code)
    with(hp,data.frame(
    Code=rep(Code,Pt),Ptdet=rep(Pt,Code)))

但我得到错误:参数意味着不同的行数。也许这是由于&#34; 0&#34;在我的数据框架中? 可能这是一件容易的事情,尽管如此,我仍然很感激,并且感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

您可以尝试:

library(data.table)
setDT(df)[,rep(Pt, max(Pt,1)),by=.(Code, Pt)][,.(Code, Pt)]

#    Code Pt
# 1:    0  5
# 2:    0  5
# 3:    0  5
# 4:    0  5
# 5:    0  5
# 6:    0  0
# 7:    0  2
# 8:    0  2
# 9:    1  0
#10:    1  3
#11:    1  3
#12:    1  3
#13:    1  1
#14:   30  0
#15:   30  6
#16:   30  6
#17:   30  6
#18:   30  6
#19:   30  6
#20:   30  6
#21:   30  2
#22:   30  2