为r中的每个时间点创建一个新变量



我有一个广泛的数据集,其中包含在不同时间点测量的变量。每个变量在数据集中有许多列,列末尾的数字表示收集数据的时间点(例如a.1、a.2、a.3等)。我想为每个时间点创建一个新变量,对相同的变量使用相同的公式。我如何通过对每个时间点只使用一个公式来编写这个代码,而不是像下面的例子那样对每个时间点重复相同的代码?

df$a.1 <- (df$b.1 + df$c.1)/2
df$a.2 <- (df$b.2 + df$c.2)/2
df$a.3 <- (df$b.3 + df$c.3)/2
df$a.4 <- (df$b.4 + df$c.4)/2

感谢

我们可以对b列进行子集化,得到相应的c列,求均值并赋值给新的列,paste+/进行矢量化

df[paste0("a.", 1:4)] <- (df[paste0("b.", 1:4)] + df[paste0("c.", 1:4)])/2

对于across也可以通过循环'b',列,然后get相应的'c'列,并更改.names中的名称来创建新列

library(dplyr)
library(stringr)
df <- df %>%
mutate(across(starts_with('b.'), ~ 
(. + get(str_replace(cur_column(), 'b', 'c')))/2,
.names = "{str_replace(.col, 'b', 'a')}"))

相关内容

  • 没有找到相关文章

最新更新