Создайте новый df из предыдущего столбца put 2 в один с R - PullRequest
0 голосов
/ 18 апреля 2020

Привет всем. Надеюсь, у вас все хорошо!

Мне понадобится помощь id для создания другого df2 из предыдущего df1.

df1 <- data.frame(Query= c("Segm1_Z_-__SP1_A", "Segm1_Y_", "Segm3_Z_-__SP2_A", "Segm3_K_-__SP2_B", "Segm1_Z_+__SP3_A"),
                  Target= c("XP_0001", "XP_0001", "XP_0001", "XP_0002", "XP_0002"),
                  Val1= c(1, 1, 1, 0, 1),
                  Val2= c(0.009, 0.010, 0.011, 0.012, 0.013)) 

вот df1:

Query               Target  Val1   Val2
Segm1_Z_-__SP1_A    XP_0001 1      0.009
Segm1_Y_+__SP1_A    XP_0001 1      0.010
Segm3_Z_-__SP2_A    XP_0001 1      0.011
Segm3_K_-__SP2_B    XP_0002 0      0.012
Segm1_Z_+__SP3_A    XP_0002 1      0.013

и я хотел бы получить df2 с new_col для замены Query и Target

;

New_col             Val1    Val2
Segm1_Z_-__SP1_A    1       0.009
Segm1_Y_+__SP1_A    1       0.010
Segm3_Z_-__SP2_A    1       0.011
Segm3_K_-__SP2_B    0       0.012
Segm1_Z_+__SP3_A    1       0.013
XP_0001             NA      NA
XP_0002             NA      NA

у кого-нибудь есть идея?

Ответы [ 2 ]

2 голосов
/ 18 апреля 2020

Ты имеешь в виду что-то подобное?

dplyr::bind_rows(df,data.frame(Query=unique(df$Target),stringsAsFactors = FALSE))

#             Query  Target Val1  Val2
#1 Segm1_Z_-__SP1_A XP_0001    1 0.009
#2 Segm1_Y_+__SP1_A XP_0001    1 0.010
#3 Segm3_Z_-__SP2_A XP_0001    1 0.011
#4 Segm3_K_-__SP2_B XP_0002    0 0.012
#5 Segm1_Z_+__SP3_A XP_0002    1 0.013
#6          XP_0001    <NA>   NA    NA
#7          XP_0002    <NA>   NA    NA

данные

df <- structure(list(Query = c("Segm1_Z_-__SP1_A", "Segm1_Y_+__SP1_A", 
"Segm3_Z_-__SP2_A", "Segm3_K_-__SP2_B", "Segm1_Z_+__SP3_A"), 
Target = c("XP_0001", "XP_0001", "XP_0001", "XP_0002", "XP_0002"
), Val1 = c(1L, 1L, 1L, 0L, 1L), Val2 = c(0.009, 0.01, 0.011, 
0.012, 0.013)), row.names = c(NA, -5L), class = "data.frame")
0 голосов
/ 18 апреля 2020

Мы можем использовать rbindlist от data.table

library(data.table)
rbindlist(list(df1, data.table(Query = unique(df1$Target))), fill = TRUE)
#           Query  Target Val1  Val2
#1: Segm1_Z_-__SP1_A XP_0001    1 0.009
#2:         Segm1_Y_ XP_0001    1 0.010
#3: Segm3_Z_-__SP2_A XP_0001    1 0.011
#4: Segm3_K_-__SP2_B XP_0002    0 0.012
#5: Segm1_Z_+__SP3_A XP_0002    1 0.013
#6:          XP_0001    <NA>   NA    NA
#7:          XP_0002    <NA>   NA    NA
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...