首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当整形不能猜测时变变量的名称时,对r中的数据进行整形

当整形不能猜测时变变量的名称时,对r中的数据进行整形
EN

Stack Overflow用户
提问于 2012-08-21 05:23:02
回答 3查看 15.4K关注 0票数 8

我有一个宽形式的数据集,有超过1500列。由于许多变量都是重复的,所以我想重塑为长形。但是,r抛出一个错误:

代码语言:javascript
复制
Error in guess(varying) : 
  Failed to guess time-varying variables from their names

通过一个玩具示例来理解这一点,我发现

代码语言:javascript
复制
u<-data.frame(id=1:100,f.1=rnorm(100),u.1=rnorm(100),i.1=rnorm(100),f.2=rnorm(100),u.2=rnorm(100),i.2=rnorm(100),
                  f.3=rnorm(100),u.3=rnorm(100),i.3=rnorm(100))

reshape(u,varying=2:10,direction="long")

工作正常。然而,我的数据看起来更像是:

代码语言:javascript
复制
u<-data.frame(id=1:100,f1=rnorm(100),u1=rnorm(100),i1=rnorm(100),f2=rnorm(100),u2=rnorm(100),i2=rnorm(100),
              f3=rnorm(100),u3=rnorm(100),i3=rnorm(100))

reshape(u,varying=2:10,direction="long")

这就是我迷失的地方。除了更改变量名(这很累人)之外,有什么聪明的想法吗?我该怎么做呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-21 05:31:10

添加v.names参数:

代码语言:javascript
复制
reshape(u,varying=2:10,direction="long", v.names=c("f", "u", "i"))
    id time          f          u             i
1.1  1    1  1.7821678  0.5144692  0.0006889928
2.1  2    1 -0.5036801  1.8242030  0.9695553817
3.1  3    1  1.1857706  0.6469423  0.6775602175
4.1  4    1 -0.5759202 -1.0349980  0.7183451146
5.1  5    1 -2.3559773  0.8598020  0.5506339475
6.1  6    1 -0.8047651 -1.4768172 -0.3667918383
...
票数 15
EN

Stack Overflow用户

发布于 2012-08-21 05:57:24

我看到了Andrie的解决方案,但也许我在理解rehape语法方面的努力也会有用。'varying‘参数应该是一个命名向量(或列表),其中的列索引按名称分组:

代码语言:javascript
复制
reshape(u, varying=c( f=c(2,5,8), u=c(3,6,9), i=c(4,7,10) ), direction="long")

这也是可行的(因为名称意味着分组):

代码语言:javascript
复制
 reshape(u,varying=names(u)[2:10], direction="long")

我回去试过你的代码,发现它也可以工作,所以我想知道你是否想要一些我们正在猜测的不同的东西?

票数 6
EN

Stack Overflow用户

发布于 2015-09-19 23:21:05

只需添加选项sep = "",让reshape知道您的列名不是由.分隔的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12045405

复制
相关文章

相似问题

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