Reputation: 157
I have the dataframe
df <- data.frame(Var1=c('T','C','C','A','G','G'), Var2 = c('-','-','+','- ','+','-'), Var3 = c('A','T','T','TATGTGTGTG','AC','AGAGAAGAGAAGAGA')))
The desired output should be
Var1 Var2 Var3
TA - A
CT - T
CT + T
ATATGTGTGTG - TATGTGTGTG
G + GAC
GAGAGAAGAGAAGAGA - AGAGAAGAGAAGAGA
by using this pseudo-code
if Var2 == '-' then Var1 == paste(Var1,Var2, sep='')
if Var2 == '+' then Var3 == paste(Var1,Var2, sep='')
I have tried
library(dplyr)
df %>% mutate(df, Var1 = ifelse(Var2 == "-", paste(Var1,Var3,sep=''), Var1))
Var1 Var2 Var3
TA - A
CT - T
2 + T
ATATGTGTGTG - TATGTGTGTG
3 + AC
GAGAGAAGAGAAGAGA - AGAGAAGAGAAGAGA
and also
df %>% mutate(Var1 = ifelse(lead(Var2 == '-', default = F), paste(Var1,Var3,sep=''), Var1))
Var1 Var2 Var3
TA - A
2 - T
CT + T
1 - TATGTGTGTG
GAC + AC
3 - AGAGAAGAGAAGAGA
and I can't figure out. Any suggestion?
Upvotes: 0
Views: 937
Reputation: 673
If Var1
, Var2
and Var3
are strings, then you can use:
df %>% mutate(Var1=ifelse(Var2=='-', paste0(Var1,Var3), Var1), Var3=ifelse(Var2=='+', paste0(Var1,Var3), Var3))
If Var1
, Var2
and Var3
are factors, then you can use:
df %>% mutate(Var1=ifelse(Var2=='-', paste0(Var1,Var3), as.character(Var1)), Var3=ifelse(Var2=='+', paste0(Var1,Var3), as.character(Var3)))
Upvotes: 1