我有一个像这样的数据集:
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)
}
其中x是winter_2000,y是spring_2000,然后x是winter_2001,y是spring_2001,依此类推,当然,我想对数据集中的所有列对快速有效地做到这一点。我为此感到挣扎。
预期输出是一个由三列组成的数据帧(每年一列,即2000、2001和2002),其值对应于第一列的winter_2000 +(365-spring_2000),而对应于第一列的winter_2001 +(365-spring_2001)第二列,第三列,winter_2001 +(365-spring_2001)。
答案 0 :(得分:1)
这是您需要的吗?
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))