R:重塑和dcast混淆
我花了几个小时来研究这个问题,并且浏览了我能找到的所有R:重塑和dcast混淆,r,reshape2,R,Reshape2,我花了几个小时来研究这个问题,并且浏览了我能找到的所有dcast答案和教程。我想我最好还是问一下 首先是示例数据: xx = data.frame(SOIL = c(rep("kraz", 20), (rep("sodo", 20))), DM = runif(0, 20,n=40), cutnum = c(rep(1:4,10))) 现在,进行所需的操作。最后,我想创建一个表,行中有Soil名称,列名为Cutnum,列中的DM值
dcast
答案和教程。我想我最好还是问一下
首先是示例数据:
xx = data.frame(SOIL = c(rep("kraz", 20), (rep("sodo", 20))),
DM = runif(0, 20,n=40),
cutnum = c(rep(1:4,10)))
现在,进行所需的操作。最后,我想创建一个表,行中有Soil
名称,列名为Cutnum
,列中的DM
值位于cutnumbers
下
# Soil 1 2 3 4
# kraz 1.2 19 12.1 9.9
# kraz 15.3 4.5 9.2 12.1
# kraz 14 15.2 5.2 15.4
# kraz 18.5 0.7 14.3 5
# kraz 17.1 15.8 2.9 9.5
# kraz 13 14.4 4.9 8.6
# kraz 3 10.2 3.5 14
# kraz 17.7 8.6 10.6 16.1
# kraz 12.6 1.7 2.2 17.5
# kraz 3.8 16.7 4.8 0.4
# kraz 4.1 17.1 12.5 14.5
# kraz 17.8 5.2 11.2 9.5
# kraz 12.3 2.2 4.8 8.7
# kraz 7.3 3 10.2 1.6
# kraz 11.3 12.2 13.4 10.2
# kraz 7.5 15.9 8.9 18.3
# kraz 15 5 19.6 16.5
# sodo 8.4 2.6 18.3 15.1
# sodo 6.9 19.7 6.5 8.4
# sodo 4 6.5 4.2 11.9
# sodo 0.8 12 18.3 15.4
# sodo 7.2 11.9 6.7 4.7
# sodo 2.6 4.4 13.8 13.7
# sodo 11.3 16.4 12.3 9.6
# sodo 5.6 17.1 11.4 16.7
# sodo 10.4 4.7 5.7 10.6
# sodo 8.7 5.6 1.1 4.8
# sodo 19.2 14.8 7 7
# sodo 18.6 9 14.9 5
# sodo 4.3 2.4 0.3 11.1
# sodo 4.9 18.4 19.5 9.7
# sodo 18.8 3.3 15.9 12.7
# sodo 19.7 0.1 13.6 3
# sodo 11.3 11.1 6.6 9.5
# sodo 8.1 11.3 10.1 3.5
# sodo 14.1 13.5 0.5 17.2
# sodo 16.8 15.6 16.2 17.3
我试过:
require(reshape2)
dcast(xx, formula = SOIL ~ Cutnum, value.var = xx$DM)
这将产生以下结果:
Error: value.var (18.943128376267911.662011714652217.372458190657214.7615862498069.991016136482364.527641483582569.107870771549641.0582387680187810.695438273251115.275471545755917.17561007011680.9180781804025171.6045100009068812.556012449786118.57340626884257.465867823921144.576288489624868.3055530954152315.88032039348041.3668353855609916.888091783039310.544018512591714.95763068087410.46029578894380.95387450419366410.41133180726329.8472668603062618.449066961184111.24195748940114.0428098617121613.89849389437598.8408243283629416.336669707670818.53340925183156.113082133233555.875797253102060.06016504485160119.295095484703784.955938421189798.97169086616486) not found in input
In addition: Warning message:
In if (!(value.var %in% names(data))) { :
the condition has length > 1 and only the first element will be used
我非常感谢能得到更有用结果的建议。根据评论,OP似乎需要按行排序的宽格式,没有函数聚合。 这应该可以做到
set.seed(123)
xx = data.frame(SOIL = c(rep("kraz", 20), (rep("sodo", 20))),
DM = runif(0, 20,n=40),
cutnum = c(rep(1:4,10)))
require(reshape2)
xx$t <- rep(1:10, each=4) # Add column to identify subset
dcast(xx, SOIL+t~cutnum, value.var="DM")[, -2] # Remove new column
set.seed(123)
xx=数据帧(土壤=c(代表(“kraz”,20),(代表(“sodo”,20)),
DM=runif(0,20,n=40),
cutnum=c(代表(1:4,10)))
要求(2)
xx$t您的预期输出是否正确?sodo的土壤在哪里?另外,您是否正在查找dcast(xx,formula=SOIL~Cutnum,mean,value.var=“DM”)
?@Pascal,如果您更正了,错误仍然存在……如果我能看到如何编辑问题,我会解决它。您需要一个字符串作为value.var,它不接受向量。@Pascal——这只会产生另一个错误。它找不到DM值…它使用了其他东西。@Heroka…如果我回答Pascal,你如何实现它。。。他的建议产生了:土壤1234克拉兹5502索多5505