将字符串值转换为频率数

问题描述 投票:0回答:1

我对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=狼。这能回答问题吗?如果我理解错了,请道歉

r data.table frequency
1个回答
1
投票

这里有一个选项,使用 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
© www.soinside.com 2019 - 2024. All rights reserved.