R - Добавить вычисленный столбец в обобщенный фрейм данных на основе необработанных данных и столбца из итогового df. - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть фрейм данных, который содержит некоторые необработанные данные. Давайте возьмем пример и используем образец данных «ирис».

# 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

Я хотел бы добавить к этому обобщенному фрейму данных (в этом примере он называется species) вычисляемый столбец.

Я пробовал оба

species$mean <- species$zoom * mean(iris$Sepal.Length)
# (AND)
species$mean <- species$zoom * mean(iris$Sepal.Length[iris$Species==species$s])

но первый не работает, потому что он выполняет вычисления по всем необработанным данным, он не группируется по видам. Второй тоже не работает.

Могу ли я сделать это без зацикливания строк?

1 Ответ

0 голосов
/ 05 сентября 2018

Может быть, этот 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...