R中列对之间的操作

R中列对之间的操作,r,function,loops,apply,R,Function,Loops,Apply,我有这样一个数据集: 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_sp

我有这样一个数据集:

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)
set.seed(123)
这就是你需要的吗

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))

也许
分组并进行映射?你能补充一下你的期望值吗?还有
spring_2000
丢失了。非常感谢,它与我期望的非常接近。这段代码可以匹配所有可能的对,而我只需要winter2000+(365-spring2000)、winter2001+(365-spring2001)、winter2002+(365-spring2002)。
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))