调整两列中值的长度以分配值

时间:2017-11-15 12:06:04

标签: r

我有一个包含两列的数据框。

C1  C2  
A  T
T  T
T  G
TTG T
G  GTGA
AAT A

我想浏览数据集,如果其值的长度小于C2则将列C1转换为“D”,如果长度大于C2则转换为“I”

期望的输出:

C1  C2
A  T
T  T
T  G
I  T
D GTGA
I  A 

1 个答案:

答案 0 :(得分:3)

我们可以使用case_when来执行此操作

library(dplyr)
df1 %>% 
    mutate(C1 = case_when(nchar(C1) < nchar(C2) ~ 'D',
                          nchar(C1) > nchar(C2) ~ 'I', 
                          TRUE ~ C1))
#   C1   C2
#1  A    T
#2  T    T
#3  T    G
#4  I    T
#5  D GTGA
#6  I    A