我有数据框
df <- data.frame(Var1=c('T','C','C','A','G','G'), Var2 = c('-','-','+','- ','+','-'), Var3 = c('A','T','T','TATGTGTGTG','AC','AGAGAAGAGAAGAGA')))
所需的输出应为
Var1 Var2 Var3
TA - A
CT - T
CT + T
ATATGTGTGTG - TATGTGTGTG
G + GAC
GAGAGAAGAGAAGAGA - AGAGAAGAGAAGAGA
使用此伪代码
如果Var2 ==' - '那么Var1 == paste(Var1,Var2,sep ='')
如果Var2 =='+'则Var3 == paste(Var1,Var2,sep ='')
我试过了
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
以及
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
我无法弄明白。有什么建议吗?
答案 0 :(得分:1)
如果Var1
,Var2
和Var3
是字符串,那么您可以使用:
df %>% mutate(Var1=ifelse(Var2=='-', paste0(Var1,Var3), Var1), Var3=ifelse(Var2=='+', paste0(Var1,Var3), Var3))
如果Var1
,Var2
和Var3
是因素,那么您可以使用:
df %>% mutate(Var1=ifelse(Var2=='-', paste0(Var1,Var3), as.character(Var1)), Var3=ifelse(Var2=='+', paste0(Var1,Var3), as.character(Var3)))