粘贴 R 中包含“Y”的列的名称

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

在下面的

DATA
中,我想创建一个
New_Column
,粘贴列的名称
A:F
,其中有一个
Y
来实现我的
Desired_Output

我想知道这在 R 中是否可能?

DATA <- read.table(h=TRUE,t="
ID  A   B   C   D   E   F
1   Y   Y   N   N   N   N
2   N   N   N   Y   N   N
3   Y   N   Y   N   Y   N
4   Y   Y   N   N   N   N
5   N   N   N   Y   N   N
6   Y   Y   Y   N   N   N
7   N   N   N   N   N   N
8   NA  NA  NA  NA  NA  NA")

Desired_Output <- read.table(h=TRUE,t="
ID  A   B   C   D   E   F   New_Column
1   Y   Y   N   N   N   N   A_B
2   N   N   N   Y   N   N   D
3   Y   N   Y   N   Y   N   A_C_E
4   Y   Y   N   N   N   N   A_B
5   N   N   N   Y   N   N   D
6   Y   Y   Y   N   N   N   A_B_C
7   N   N   N   N   N   N   N
8   NA  NA  NA  NA  NA  NA  NA")
r dataframe function dplyr tidyverse
1个回答
0
投票

您可以使用 tidyverse 只需几个步骤即可完成此操作:

library(tidyverse)

new_col <- DATA |> 
  pivot_longer(-ID) |>
  filter(value == 'Y') |> 
  group_by(ID) |> 
  summarize(new_column = paste(name, collapse = '_'))

new_df <- left_join(DATA, new_col, by = 'ID')

  ID    A    B    C    D    E    F new_column
1  1    Y    Y    N    N    N    N        A_B
2  2    N    N    N    Y    N    N          D
3  3    Y    N    Y    N    Y    N      A_C_E
4  4    Y    Y    N    N    N    N        A_B
5  5    N    N    N    Y    N    N          D
6  6    Y    Y    Y    N    N    N      A_B_C
7  7    N    N    N    N    N    N       <NA>
8  8 <NA> <NA> <NA> <NA> <NA> <NA>       <NA>
© www.soinside.com 2019 - 2024. All rights reserved.