我是 r 的新手,正在寻找以下问题的答案。 我有几年的天气数据(比如 2001-2010),我正在对数据应用一些方程式(就像线性方程式一样),目的是将数据与某个斜率相乘,比如 (m) 并添加常数以获得想要的形式。在某些时候,我觉得应该改变方程式并应用新的方程式(比如从 2004 年 8 月到 1 月,方程式应该是 "" y'=0.05(y)+7 "" 而不是 "" y'=1.12 (y) + 4 "" 特定列的数据集的一般方程,比如温度)。
在向特定日期范围内的数据集的某些或给定列添加单独的方程式时提供的任何帮助将不胜感激。
一个 tidyverse 解决方案将是
dplyr::mutate
和 dplyr::case_when
的组合。 mutate()
函数可以在您的数据集中创建一个新列,case_when
可以让您根据年份更改函数。
这里是一些游戏数据:
df <- data.frame(
temp_ob = rnorm(n = 100, mean = 14, sd = 1),
year = rep(c(2001:2010), 10)
)
这是一个简单的例子,其中
case_when
根据数据框那一行中的年份更改新变量的计算方式。
df <- df %>%
dplyr::mutate( # this is making a new column
# you can have more lines or more complicated conditions, but this uses 2
temp_ob_new = dplyr::case_when(
year %in% c(2001:2004) ~ (0.05*(temp_ob) + 7),
year %in% c(2005:2010) ~ (1.12*(temp_ob) + 4)
)
)
head(df)
# temp_ob year temp_ob_new
#1 13.20622 2001 7.660311
#2 12.33559 2002 7.616779
#3 14.45016 2003 7.722508
#4 13.29238 2004 7.664619
#5 14.81847 2005 20.596685
#6 14.36778 2006 20.091909