从R中的因子记录创建变量

从R中的因子记录创建变量,r,dataframe,lapply,R,Dataframe,Lapply,我有点迷路了,我有一个数据框,看起来像这样: tract ageClass count 1 [0-4] 71 2 [0-4] 192 3 [0-4] 81 1 [5-8] 9 2 [5-8] 86 3 [5-8] 42 我希望得到以下结果: tract [0-4] [5-8] 1

我有点迷路了,我有一个数据框,看起来像这样:

tract   ageClass    count
    1      [0-4]       71
    2      [0-4]      192
    3      [0-4]       81
    1      [5-8]        9
    2      [5-8]       86
    3      [5-8]       42
我希望得到以下结果:

tract   [0-4]   [5-8]
    1      71       9
    2     192      86
    3      81      42
我在互联网上寻找解决方案已经有一段时间了,但到目前为止什么都没有。。。有什么想法吗


非常感谢

假设您的数据集为df,我可以考虑三种可能的选择

ageClass <- c("[0-4]", "[5-8]")
ageClassDF <- lapply(ageClass, function(x) dx[which(dx$ageClass==x), ])

ageClassDF <- Reduce(function(...) merge(..., by = "tract.1", all = TRUE), ageClassDF )


假设您的数据集为df,我可以考虑三种可能的选择


尝试xtabs执行交叉制表即使有点困难,函数restrapeData=df,idvar=tract,v.names=count,timevar=ageClass,direction=wide@MamounBenghezal整形是从R基开始的,不需要任何软件包。请尝试使用xtabs执行交叉制表。整形功能即使有点困难,也可以工作,重塑数据=df,idvar=tract,v.names=count,timevar=ageClass,direction=wide@MamounBenghezal重塑是基于R的,你不需要任何软件包。你在回答你自己的问题吗?对代码有什么解释吗?确实有。我找到了一个解决方案:我正在用lappy对data.frame dx进行子集设置。然后我通过Reduce函数重新创建它。顺利…你在回答你自己的问题吗?对代码有什么解释吗?确实有。我找到了一个解决方案:我正在用lappy对data.frame dx进行子集设置。然后我通过Reduce函数重新创建它。平整的
xtabs(count ~ tract + ageClass, df) 
#       ageClass
# tract [0-4] [5-8]
#     1    71     9
#     2   192    86
#     3    81    42
library(reshape2)
dcast(df, tract ~ ageClass, value.var = "count") 
#   tract [0-4] [5-8]
# 1     1    71     9
# 2     2   192    86
# 3     3    81    42
library(tidyr)
spread(df, ageClass, count)
#   tract [0-4] [5-8]
# 1     1    71     9
# 2     2   192    86
# 3     3    81    42