为 R 中的每个时间点创建一个新变量
Create a new variable for each time point in 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' 列并更改 [=19] 中的名称=] 创建新列
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')}"))
我有一个广泛的数据集,其中包含在不同时间点测量的变量。每个变量在数据集中都有许多列,列末尾的数字表示收集数据的时间点(例如 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' 列并更改 [=19] 中的名称=] 创建新列
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')}"))