根据另一列将多个列组合成新列

问题描述 投票:0回答:1

我有一个数据框,其中有多列描述一个人每周的数据,还有一列描述他们的参考周。我想创建一个新变量,其中包含与其参考周相对应的值。

示例数据;

第 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]

提前致谢

r dataframe data-manipulation
1个回答
0
投票

您可以

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
© www.soinside.com 2019 - 2024. All rights reserved.