通过变量(不同长度的因子)分离数据帧

时间:2014-01-30 22:10:07

标签: r matrix dataframe data-management

我有一个数据框(st1),我按因子分割。然后,我通过另一个因素对分割数据(即均值)执行了函数,因此,我不能再执行unsplit,因为我的原始数据帧现在具有不同的长度。

至于引导你完成我的工作,这里有一段代码:

NT = data.table(st1)

NT2=split (NT, NT$bin)

NT3 <- data.frame(sapply( NT2 , function(x) x[, list(ang=length(unique(thetadeg)), len=length(T), Vm=mean(V)), by=c("A")]))

st1的负责人:

  

结构(列表(A = c(25L,25L,25L,25L,25L,25L),T = 56:61,       X = c(481.07,487.04,490.03,499,504.97,507.96),Y = c(256.97,       256.97,256.97,256.97,256.97,256.97),V = c(4.482,5.976,       7.47,4.482,5.976,7.47),thetarad = c(0.164031585831919,       0.169139558949956,0.171661200692621,0.177083242584008,       0.183907246800473,0.186289411097781),thetadeg = c(9.39831757286096,       9.69098287432395,9.83546230358968,10.2607139792383,10.537109061132,       10.6735970214433),bin =结构(c(1L,1L,1L,1L,1L,       1L),. Label = c(“binA”,“binB”,“binC”,“outbin”),class =“factor”)),. Name = c(“A”,“T”,“X”, “Y”,“V”,“thetarad”,   “thetadeg”,“bin”),row.names = c(NA,6L),class =“data.frame”)

我没有为我的NT3设置一个dput(head),因为它太长了。

我尝试过unsplit,取消列表但未成功。我想做的是再次使用bin作为一个数据框。

任何帮助都会很棒。

编辑:我希望我的数据框有A,ang,len,Vm和bin作为标题。

2 个答案:

答案 0 :(得分:1)

您的预期输出并不完全清楚,但看看NT3的内容,这可能会更有效:

NT <- data.table(ST1, key="A")
NT[, list(ang=length(unique(thetadeg))
              , len=length(T)
              , Vm=mean(V))
   , by=list(A, bin) ]

答案 1 :(得分:0)

我设法找到了我做错了什么,所以现在可行了:

NT <- data.table(st1, key="bin")
NT2=NT[, list(ang=length(unique(thetadeg)), len=length(T), Vm=mean(V)), by=c("A", "bin")]

显然我已经可以在data.table中通过@Ricardo Saporta提出的声明来做。谢谢你!