目前,我想从iris
数据集中输出数据帧,该数据集将涵盖以下查询:
SELECT MIN(Sepal.Width), MAX(Sepal.Width), Sepal.Length, species FROM iris GROUP BY Sepal.Length, species
我创建了该代码:
query<-as.data.frame(aggregate(. ~ Sepal.Length, species, data = iris, FUN = function(x) c(min = min(x), maxi = max(x) ) ))
但它没有输出我的预期结果。我在sqldf和dplyr中做到了,但我的问题是:
如何仅使用R-Base
函数执行此操作?
答案 0 :(得分:2)
你非常接近。您的问题是aggregate
使用by
的公式界面而不是,而不是两者结合使用。如果你想从多个组的sql模仿GROUP BY
,请将它们放在公式的右侧。
query<-as.data.frame(aggregate(. ~ Species+Sepal.Length,
data = iris,
FUN = function(x) c(min = min(x), maxi = max(x) ) ))
如果您只对一个特性感兴趣,请将其替换为公式左侧的.
。
query<-as.data.frame(aggregate(Sepal.Width ~ Species+Sepal.Length,
data = iris,
FUN = function(x) c(min = min(x), maxi = max(x) ) ))