微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

按字符向量聚合

如何解决按字符向量聚合

我正在尝试汇总我的数据(样本):

     Julian_Date Week Site Color_Combo Singing Building Incubating nestlings Empty_nest
1            5    1   BV                   1        0          0         0          0
2           21    3   BV                   0        0          0         0          0
3           25    4   BV                   1        1          0         0          0
4           32    5   BV NB/SI:NB/DG       0        0          0         0          0
5           32    5   BV NB/SI:NB/MV       0        0          0         0          0
6           32    5   BV NB/NB:NB/NB       0        0          0         0          0
7           32    5   BV NB/NB:NB/NB       0        0          0         0          0
8           33    5   BV NB/NB:NB/NB       0        0          0         0          0
9           33    5   BV NB/NB:NB/NB       0        0          0         0          0
10          33    5   BV NB/NB:NB/NB       0        0          0         0          0
11          33    5   BV NB/NB:NB/NB       0        0          0         0          0
12          33    5   BV NB/NB:NB/NB       0        0          0         0          0
13          33    5   BV NB/NB:NB/NB       0        0          0         0          0
14          33    5   BV NB/NB:NB/NB       0        0          0         0          0
15          33    5   BV NB/NB:NB/NB       0        0          0         0          0
16          33    5   BV NB/NB:NB/NB       0        0          0         0          0
17          33    5   BV NB/NB:NB/NB       0        0          0         0          0
18          34    5   BV NB/NB:NB/NB       0        0          0         0          0
19          34    5   BV NB/NB:NB/NB       0        0          0         0          0
20          35    5   BV NB/NB:NB/SI       0        0          0         0          0
21          35    5   BV NB/RD:NB/SI       0        0          0         0          0
22          35    5   BV NB/YE:NB/SI       0        0          0         0          0
23          35    5   BV NB/NB:NB/NB       0        0          0         0          0
24          35    5   BV NB/NB:NB/NB       0        0          0         0          0
25          35    5   BV NB/NB:NB/NB       0        0          0         0          0
26          35    5   BV NB/NB:NB/NB       0        0          0         0          0
27          35    5   BV NB/NB:NB/NB       0        0          0         0          0
28          35    5   BV NB/NB:NB/NB       0        0          0         0          0
29          35    5   BV NB/NB:NB/NB       0        0          0         0          0
30          35    5   BV NB/NB:NB/NB       0        0          0         0          0

...这样我就可以得到每个行为观察(最后五列)的数量总和,每个 Color_Combo 中都有一个唯一的 Week。每种颜色组合代表一只鸟,我想知道一周内有多少不同 只鸟唱歌(那一周一只鸟唱歌多少次无关紧要)。我在使用 aggregate 时遇到问题,因为 color_combo一个字符向量,我尝试使用这个问题中的代码R: Aggregate character strings 但无法让它工作。我想要的是这样的:

     Week Singing Building Incubating nestlings Empty_nest
 [1,]    1       1        0          0         0          0
 [2,]    3       0        0          0         0          0
 [3,]    4       1        1          0         0          0
 [4,]    5       0        0          0         0          0
 [5,]    6       0        0          0         0          0
 [6,]    7       0        0          0         0          0
 [7,]    8       0        0          0         0          0
 [8,]    9       0        0          0         0          0
 [9,]   10       0        0          0         0          0
[10,]   11       0        0          0         0          0  

我有相当多的数据,所以最终会有大于 1 的条目。任何帮助将不胜感激!

解决方法

您可以为每个 Color_Combo 中的每个行为计算唯一 Week 的数量。

使用 dplyr 可以这样做:

library(dplyr)

sample %>%
  group_by(Week) %>%
  summarise(across(Singing:Empty_Nest,~n_distinct(Color_Combo[. > 0])))-> result

result

#   Week Singing Building Incubating Nestlings Empty_Nest
#  <int>   <int>    <int>      <int>     <int>      <int>
#1     1       1        0          0         0          0
#2     3       0        0          0         0          0
#3     4       1        1          0         0          0
#4     5       0        0          0         0          0

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。