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

R汇总了尚未定义的列范围包括因子

如何解决R汇总了尚未定义的列范围包括因子

我可能会错过正确的单词,无法使用搜索功能找到答案。我将拥有一个具有未知列数的数据集,因为它们是另一个程序中的工作函数,以后的更改将改变数据集中变量的数量。但是,数据集结构清晰,开头有6个变量(包括下面提到的 code 一个因子变量和 year ,并在第7列开始与其他程序(MaxQDA)中的工作有关的其他变量。

因此,我希望灵活地调用7至N列以使用汇总函数替换以下代码中的点,据我所知,这需要所有列。

dataset2 <- aggregate(. ~ code+jahr,data = dataset,sum,na.action=na.pass
)

here的建议无济于事,因为我不知道如何将 code + jahr 转换为其他建议的聚合函数编写变体。

附录:或者,换句话说:我希望从合计函数中排除几列,同时总结一系列其他列。

由于对向量类型存在困惑。我有一些因子数据,例如ID和Name。数据看起来像这样

set.seed(42)
test2 <- as.data.frame(matrix(sample(16 * 4,replace=TRUE),ncol=16,nrow=4))
code <-c("aaa","bbb","aaa","ddd")
jahr <- c("1990","1993","2007","2020")
id <- c("id1","id2","id3","id4")
Name <- c("bla","bla2","bla3","bla4")
test <- data.frame(code,jahr,id,Name)
dataset <- data.frame(test,test2)
dataset[1:4] <- lapply(dataset[,1:4],as.factor)

解决方法

在上方使用dataset,我们想从聚合中删除idName,因为它们是不用于定义组的因素。最简单的方法是提取这些数据列:

dataset2 <- aggregate(. ~ code+jahr,data = dataset[,-(3:4)],sum,na.action=na.pass)

稍微复杂一点的方法是定义一个逻辑语句,该逻辑语句标识作为因素但未用于分组的列。主要优点是不必计算列号并使更改分组变量相对简单:

keep <- colnames(dataset) %in% c("code","jahr") | sapply(dataset,is.numeric)
dataset2 <- aggregate(. ~ code+jahr,keep],na.action=na.pass)

两者都产生相同的结果

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