Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:重塑和dcast混淆_R_Reshape2 - Fatal编程技术网

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