我对R比较陌生,在data.table中,我正在努力地重组一个表。该表目前是这样的。
species number snow_depth
wolf 3 5
wolf 1 5
wolf 1 5
coyote 1 30
coyote 1 30
我想把它改成这样:
coyote wolf snow depth
0 3 5
0 1 5
0 1 5
1 0 30
等。视图使用ggplot2将雪深放在x轴上,频数放在y轴上,2条线代表2个物种。
我试过这样
>DT %>% separate(species, c("wolf", "coyote"))
但却得到这样的输出
wolf coyote number snow_depth
1 wolf <NA> 3 5
2 wolf <NA> 1 5
3 wolf <NA> 1 5
4 coyote <NA> 1 30
5 coyote <NA> 1 30
6 coyote <NA> 1 30
7 coyote <NA> 1 25
我在输入这个的时候也收到了错误信息(从网上抄来的,呵呵)
> separate(DT, species, sep = "[^[:alnum:]]+", remove=TRUE, convert=FALSE)
谁能告诉我我做错了什么?先谢谢你
编辑--很不幸,我使用该代码出现了错误。绘制2条线的计划是,每个雪深占一个时间段,此时记录了x只小狼和x只狼的数量,所以每个雪深下每个物种的频率。所以每个雪深的2个数据点,1=野狼2=狼。这能回答问题吗?如果我理解错了,请道歉
这里有一个选项,使用 data.table
:
DT[, rn := .I]
dcast(DT, rn + snow_depth ~ species, fill=0L, value.var="number")
产出:
rn snow_depth coyote wolf
1: 1 5 0 3
2: 2 5 0 1
3: 3 5 0 1
4: 4 30 1 0
5: 5 30 1 0