R-根据原始数据和汇总df中的列,将计算列添加到汇总数据框中
我有一个包含一些原始数据的数据框。让我们举一个例子,使用数据样本irisR-根据原始数据和汇总df中的列,将计算列添加到汇总数据框中,r,dataframe,R,Dataframe,我有一个包含一些原始数据的数据框。让我们举一个例子,使用数据样本iris # load a data sample data("iris") # Sepal.Length Sepal.Width Petal.Length Petal.Width Species #1 5.1 3.5 1.4 0.2 setosa #2 4.9 3.0 1.4 0.2 s
# load a data sample
data("iris")
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1 5.1 3.5 1.4 0.2 setosa
#2 4.9 3.0 1.4 0.2 setosa
#3 4.7 3.2 1.3 0.2 setosa
# ...
我还有另一个数据框,其中包含了该物种的汇总数据
species <- data.frame(unique(iris$Species))
colnames(species) <- "s"
# Add a zoom level
species$zoom <- c(2,3,5)
# species zoom
# 1 setosa 2
# 2 versicolor 3
# 3 virginica 5
但是第一种方法不起作用,因为它是对所有原始数据进行计算,而不是按物种分组。第二个似乎不太管用
我可以在不循环行的情况下执行此操作吗?也许这个data.table方法可以帮助您解决这个问题
data("iris")
library(data.table)
setDT( iris )[ , list( mean = mean( Sepal.Length ) ), by=Species][, mean_mult := mean * c(2,3,5)][]
# Species mean mean_mult
# 1: setosa 5.006 10.012
# 2: versicolor 5.936 17.808
# 3: virginica 6.588 32.940
当你可以进行聚合时,为什么你想要一个单独的数据框。~Species,iris,mean?因为在我的真实数据集中,我需要做比平均更复杂的事情,平均应该使用汇总数据框中的一些列。我会相应地更新我的数据样本。谢谢你的回答,你认为我可以调整这个以使用我总结的数据框中的缩放列吗?我在20分钟前编辑了我问题中的代码
data("iris")
library(data.table)
setDT( iris )[ , list( mean = mean( Sepal.Length ) ), by=Species][, mean_mult := mean * c(2,3,5)][]
# Species mean mean_mult
# 1: setosa 5.006 10.012
# 2: versicolor 5.936 17.808
# 3: virginica 6.588 32.940