我有一个表格(data.frame),其中包含数字数据和因素数据,其中几个是字符变量(例如'species'、'Fam_name'、'gear'),我想在其中计算'weight'的小计(总和)和每个“ss”的“数字”变量。
我曾尝试使用“聚合”函数,但未能让它返回“齿轮”变量的字符值。
下面是我的表头
survey station ss species weight number bdep lon lat Sci_name Fam_name gear
1 2012901 1 2012901001 CARSC04 11.20 20 23 37.61650 19.14900 Scomberoides lysan CARANGIDAE TB
2 2012901 1 2012901001 SCMGR02 0.98 2 23 37.61650 19.14900 Grammatorcynus bilineatus SCOMBRIDAE TB
3 2012901 2 2012901002 NOCATCH 0.00 0 6 38.48333 18.71667 NO CATCH NO CATCH TB
4 2012901 3 2012901003 LUTLU06 5.65 1 6 38.48333 18.71667 Lutjanus bohar LUTJANIDAE TB
5 2012901 3 2012901003 SHACAB1 4.00 1 6 38.48333 18.71667 Triaenodon obesus CARCHARHINIDAE TB
6 2012901 4 2012901004 NOCATCH 0.00 0 9 38.48333 18.71667 NO CATCH NO CATCH TB
我尝试使用以下代码,目的是使用绑定将两者结合起来,
catch1<-aggregate(cbind(weight, number) ~ ss, data = catch, FUN = sum)
catch2<-aggregate(cbind(survey, station, bdep, lon, lat, gear) ~ ss, data = catch, FUN=median)
但是,虽然第一行做了我想要的 - 对每个“ss”求和,另一行导致“gear”的数字中位数,而我希望它返回那个特定“ss”的“gear”代码。
重构“齿轮”因素(感谢 BrodieG):
catch2$gear <- factor(levels(catch$gear)[catch2$gear], levels=levels(catch$gear))
问题解决了 :-)