В R У меня есть data.frame, который имеет несколько переменных, которые измерялись ежемесячно в течение нескольких лет. Я хотел бы получить среднемесячный (используя все годы) для каждой переменной. В идеале эти новые переменные будут объединены в новый data.frame (переносящий идентификатор), ниже я просто добавляю новую переменную в data.frame. Единственный способ, которым я знаю, как это сделать в данный момент (внизу), кажется довольно трудоемким, и я надеялся, что в R может быть более разумный способ сделать это, что не потребует печатать каждый месяц и переменную, как я сделал ниже.Создайте несколько новых производных переменных из существующих переменных в data.frame
# Example data.frame with only two years, two month, and two variables
# In the real data set there are always 12 months per year
# and there are at least four variables
df<- structure(list(ID = 1:4, ABC.M1Y2001 = c(10, 12.3, 45, 89), ABC.M2Y2001 = c(11.1,
34, 67.7, -15.6), ABC.M1Y2002 = c(-11.1, 9, 34, 56.5), ABC.M2Y2002 = c(12L,
13L, 11L, 21L), DEF.M1Y2001 = c(14L, 14L, 14L, 16L), DEF.M2Y2001 = c(15L,
15L, 15L, 12L), DEF.M1Y2002 = c(5, 12, 23.5, 34), DEF.M2Y2002 = c(6L,
34L, 61L, 56L)), .Names = c("ID", "ABC.M1Y2001", "ABC.M2Y2001","ABC.M1Y2002",
"ABC.M2Y2002", "DEF.M1Y2001", "DEF.M2Y2001", "DEF.M1Y2002",
"DEF.M2Y2002"), class = "data.frame", row.names = c(NA, -4L))
# list variable to average for ABC Month 1 across years
ABC.M1.names <- c("ABC.M1Y2001", "ABC.M1Y2002")
df <- transform(df, ABC.M1 = rowMeans(df[,ABC.M1.names], na.rm = TRUE))
# list variable to average for ABC Month 2 across years
ABC.M2.names <- c("ABC.M2Y2001", "ABC.M2Y2002")
df <- transform(df, ABC.M2 = rowMeans(df[,ABC.M2.names], na.rm = TRUE))
# and so forth for ABC
# ...
# list variables to average for DEF Month 1 across years
DEF.M1.names <- c("DEF.M1Y2001", "DEF.M1Y2002")
df <- transform(df, DEF.M1 = rowMeans(df[,DEF.M1.names], na.rm = TRUE))
# and so forth for DEF
# ...
Я считаю, что ваш первый ответ, который не добавился к исходным данным.frame, был больше того, что я искал. Как только средства вычисляются, мне не нужны исходные значения в data.frame. – nofunsally