我有一个数据框,其中有多列描述一个人每周的数据,还有一列描述他们的参考周。我想创建一个新变量,其中包含与其参考周相对应的值。
示例数据;
第 1 栏 | 第 2 栏 | 第3栏 | 第 4 栏 | 第 5 栏 | 周 |
---|---|---|---|---|---|
A | D | G | J | M | 3 |
B | E | H | K | N | 2 |
C | F | H | L | O | 5 |
期望的输出;
第 1 栏 | 第 2 栏 | 第3栏 | 第 4 栏 | 第 5 栏 | 周 | 想要 |
---|---|---|---|---|---|---|
A | D | G | J | M | 3 | G |
B | E | H | K | N | 2 | E |
C | F | H | L | O | 5 | O |
到目前为止,我已经提取了与参考周相对应的变量名称,但我不知道如何将相应的值插入到“want”变量中。
dfnames <- c("Col1", "Col2", "Col3", "Col4", "Col5")
wantname <- dfnames[df$week]
提前致谢
您可以
get
目标列中的值。
library(dplyr)
df %>% rowwise() %>% mutate(want = get(paste0("Col", Week))) %>% ungroup()
# A tibble: 3 × 7
Col1 Col2 Col3 Col4 Col5 Week want
<chr> <chr> <chr> <chr> <chr> <int> <chr>
1 A D G J M 3 G
2 B E H K N 2 E
3 C F H L O 5 O
或使用
sapply
以 R 为基础来迭代行:
df$want <- sapply(1:nrow(df), \(x) df[x, paste0("Col", df$Week[x])])
df
Col1 Col2 Col3 Col4 Col5 Week want
1 A D G J M 3 G
2 B E H K N 2 E
3 C F H L O 5 O