【发布时间】:2012-12-25 13:31:57
【问题描述】:
我有一个宽格式的 csv 文件,我需要将其更改为长格式。我刚刚给出了前 3 行。
CODEA C45 ragek ra80 ra98 ... Obese14 Overweight14 Obese21 hibp14 hibp21 Overweight21
1 1 NA 3 4 1 NA NA NA NA NA NA NA NA
2 3 2 3 3 1 0 0 0 0 1 0 0 0
3 4 2 3 6 1 NA NA NA NA NA NA NA NA
这样下去。 Obese 14 (Yes/No); Overweight(yes/no)etc.
> names(Copy.of.BP_2)
[1] "CODEA" "C45" "ragek" "ra80"
[5] "ra98" "CBCLAggressionAt1410" "CBCLInternalisingAt1410" "Obese14"
[9] "Overweight14" "Overweight21" "Obese21" "hibp14"
[13] "hibp21"
它有 6898 个观测值和 13 个变量
我正在尝试以堆叠格式组织这些数据;我认为以下一个将是一个不错的选择。我不知道如何组合obese 和overweight 类别,因为原始长版本有obese14、overweight14、obese 21 和overweight21 4 个不同的类别。
CODEA ... time Obese Overweight HiBP
14
21
14
21 ... etc
我给出的语法是:
BP.stack1=reshape(Copy.of.BP_2,
timevar="time",direction="long",
varying=list(names(Copy.of.BP_2[8:13]),
v.names="Obese","Overweight","HiBP",idvar=c("CODEA")
它似乎不起作用,它给出一个+ 符号并等待进一步的命令。
我应该使用melt 和cast 吗?我阅读了reshape 包手册,但看不懂。
编辑:问题重组
【问题讨论】:
-
对不起,我不知道如何创建一个较小的版本(我是初学者)
-
@UshaGurunathan,请参阅我的回答,了解如何解决您尝试使用
reshape()的问题。你实际上是非常接近。