Операции между парами столбцов в R - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть такой набор данных:

set.seed(123)
spring_2000 <- runif(15, 270, 330)
spring_2001 <- runif(15, 270, 330)
spring_2002 <- runif(15, 270, 330)
winter_2000 <- runif(15, 4, 60)
winter_2001 <- runif(15, 4, 60)
winter_2002 <- runif(15, 4, 60)

df_spring <- data.frame(spring_2000=spring_2000,
             spring_2001=spring_2001,
             spring_2002=spring_2002)

df_winter <- data.frame(winter_2000=winter_2000,
                    winter_2001=winter_2001,
                    winter_2002=winter_2002)

df <- cbind(df_winter, df_spring)

Я хочу применить эту функцию для всех пар столбцов, соответствующих весне и зиме того же года:

subtraction <- function(x,y){
  x+(365-y)
}

гдех - зима_2000, а у - весна_2000, затем х - зима_2001, а у - весна_2001 и т. д., и, конечно, я хочу сделать это быстро и эффективно для всех пар столбцов в наборе данных.Я борюсь с этим.

Ожидаемый результат - это кадр данных, состоящий из трех столбцов (один столбец в год, то есть 2000, 2001 и 2002), со значениями, соответствующими winter_2000 + (365-spring_2000) для первого столбца, winter_2001 + (365-весна_2001) для второго столбца, зима_2001 + (365-весна_2001) для третьего столбца.

1 Ответ

0 голосов
/ 28 февраля 2019

Это то, что вам нужно?

library(tidyr)
library(dplyr)
df %>% 
  gather(Year,Value,contains("winter")) %>% 
  gather(Year_1,Value_1,contains("spring")) %>% 
 group_by(Year,Year_1) %>% 
  mutate(Target=Value_1 + (365-Value))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...