r - R中的列对之间的操作
问题描述
我有一个这样的数据集:
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) 第三列。
解决方案
这是你需要的吗?
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))
推荐阅读
- php - 尝试访问模型时找不到类“App\Models\Student”
- javascript - 如何在 Django 中从 Axios/Ajax 登录?
- node.js - 节点 JS 连接生命周期
- reactjs - React 选择 Typescript 事件类型
- java - 由于线程执行,Spring Batch 的集成测试失败
- python - 跨字典添加 Numpy 数组
- html - 如何让我的图片在左边,文字在右边(Bootstrap)
- spring-cloud-dataflow - 在 Kubernetes 中的 Spring Cloud Data Flow 服务器上启用身份验证
- ruby-on-rails - Rails 连接到 has_many 关系的特定元素
- java - Quarkus:如何将复制的 SQL 数据库与读/写实例连接起来?