【发布时间】:2021-02-23 13:13:00
【问题描述】:
以下数据框是更大 df 的子集,其中包含重复信息
df<-data.frame(Caught=c(92,134,92,134),
Discarded=c(49,47,49,47),
Units=c(170,170,220,220),
Hours=c(72,72,72,72),
Colour=c("red","red","red","red"))
在Base R中,我想得到以下内容:
df_result<-data.frame(Caught=226,
Retained=96,
Units=390,
Hours=72,
colour="red")
因此,基本上结果是 Caught、Retained、Units 列的唯一值的总和,并为 Hours 和 color 保留相同的值(Caught=92+134,Retained=49+47,Units=170+220,Hours= 72,颜色=“红色)
但是,我打算在包含几列的更大的 data.frame 中执行此操作。我的想法是应用一个基于列名的函数:
l <- lapply(df, function(x) {
if(names(x) %in% c("Caught","Discarded","Units"))
sum(unique(x))
else
unique(x)
})
as.data.frame(l)
但是,这不起作用,因为我不完全确定在使用 lapply() 和诸如此类的其他函数时如何提取向量名称。
我尝试过没有成功实现by()、apply() 函数。
谢谢
【问题讨论】:
标签: r database aggregate database-management