从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