gpt4 book ai didi

r - 如何解决 R 中 reshape2 包的 dcast 错误?

转载 作者:行者123 更新时间:2023-12-03 07:07:40 27 4
gpt4 key购买 nike

我正在尝试使用 reshape2 包将一些数据从长数据转换为宽数据,但出现了一个无法解决的错误。在下面的示例中,我创建了一些与真实数据相似的虚假数据。我想将每个“主题”转换为一列,其中包含该主题中给定“ID”号的所有“学分”的总和。

library(reshape2)  

# 创建假数据并将其转换为数据框

ID = rep(c(100,101,102,103), each=5)  
subj = rep(c("CHEM","ENGL","HIST","MATH"), 5)
credits = rep(3, 20)
df = data.frame(ID, subj, credits)

# 从长格式转换为宽格式,并将“subj”的值作为新列
# 以及“学分”的总和作为每个“主题”的值

df.wide = dcast(df, ID ~ subj, value.var=credits, fun.aggregate=sum)

这是我运行 dcast 命令时想要得到的结果:

ID    CHEM    ENGL    HIST    MATH  
100 6 3 3 3
101 3 6 3 3
[and so on for each value of ID]

这是我运行上面的代码时实际遇到的错误:

Error in .subset2(x, i, exact = exact) : 
recursive indexing failed at level 2

如果我从 dcast 调用中删除“fun.aggregate=sum”,我会得到同样的错误。

此外,如果我使用sample()函数(而不是rep())创建“credits”的值,并调用dcast(不带fun.aggregate=sum),我会收到以下错误:

Error in .subset2(x, i, exact = exact) : 
no such index at level 1
据我所知,我之前运行过类似的 dcast 命令,没有出现任何问题。我猜当我看到解决方案时,我会拍着额头大喊“doh”,但我被卡住了。

最佳答案

只需将学分放在引号中即可:

df.wide = dcast(df, ID ~ subj, value.var="credits", fun.aggregate=sum)
df.wide
ID CHEM ENGL HIST MATH
1 100 6 3 3 3
2 101 3 6 3 3
3 102 3 3 6 3
4 103 3 3 3 6

关于r - 如何解决 R 中 reshape2 包的 dcast 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9448870/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com