首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >R中的折叠行:无法将类“公式”强制到data.frame (R)

R中的折叠行:无法将类“公式”强制到data.frame (R)
EN

Stack Overflow用户
提问于 2021-10-28 06:19:54
回答 1查看 77关注 0票数 0

我在R中有以下数据:

代码语言:javascript
运行
复制
  name = c("person1", "person2", "person1", "person2")
  iter = c(1,1,2,2)
  col1 = c(12, 33, 55, 8)
  col2 = c(4, 7, 88,2)
  col3 = c(11,1,6, 7)
  col4 = c(55, 2 , 4 ,5)
  
  orig_data = data.frame(name, iter, col1, col2, col3, col4)

这些数据如下所示:

代码语言:javascript
运行
复制
     name iter col1 col2 col3 col4
1 person1    1   12    4   11   55
2 person2    1   33    7    1    2
3 person1    2   55   88    6    4
4 person2    2    8    2    7    5

我正在努力使最终结果看起来如下:

代码语言:javascript
运行
复制
   name iter col1_iter1 col1_iter2 col2_iter1 col2_iter2 col3_iter1 col3_iter2 col4_iter1 col4_iter2
1 person1    1         12         55          4         88         11          6         55          4
2 person2    2         33          8          7          2          1          7          2          5

我做了一些研究,发现R中的"data.table“库可能能够解决这个问题。我在R中尝试了以下代码:

代码语言:javascript
运行
复制
library(data.table)
  
  dcast_data = data.frame(setDT(orig_data), iter ~ name, value.var = c('col1', 'col2', 'col3', 'col4'))

但这会产生以下错误:

代码语言:javascript
运行
复制
Error in as.data.frame.default(x[[i]], optional = TRUE) : 
  cannot coerce class ‘"formula"’ to a data.frame

有人能告诉我我做错了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-28 06:28:53

由于您希望以宽格式获取数据,所以我认为您是在寻找dcast函数而不是data.frame。此外,所使用的公式也应更改。

代码语言:javascript
运行
复制
library(data.table)
dcast(setDT(orig_data), name~iter, value.var = c('col1', 'col2', 'col3', 'col4'))

#      name col1_1 col1_2 col2_1 col2_2 col3_1 col3_2 col4_1 col4_2
#1: person1     12     55      4     88     11      6     55      4
#2: person2     33      8      7      2      1      7      2      5
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69749162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档