R:从字符串中获取前13个字符,并与其他字符串连接

时间:2018-07-11 10:17:49

标签: r split character concatenation

我有一个数据帧x = [[int(i)] for i in raw_input().split()] print (x.sort()) ,其中包含三列dfrefdriver

tour

我想对新列 ref driver tour 02062018-1130SGA->BRT-Buttes Chaumont Mark NA 02162018-1230BRT-A2Pas Courbevoie Marceau John NA 02067018-1300SGA->BRT-Brune 2/2 Sam NA 020718-0800-CHILLY-CHARENTON Claire 678 020718-0800-CHILLY-BATIGNOLLES NA NA 进行突变,如果ID为NA,则它会串联tourref的前13个字母。如果tour不是NA,它将在driver中返回相同的值。因此结果应如下所示:

tour

请注意,如果 ref driver tour ID 02062018-1130SGA->BRT-Buttes Chaumont Mark NA 02062018-1130Mark 02162018-1230BRT-A2Pas Courbevoie Marceau John NA 02162018-1230John 02067018-1300SGA->BRT-Brune 2/2 Sam NA 02067018-1300Sam 020718-0800-CHILLY-CHARENTON Claire 678 678 020718-0800-CHILLY-BATIGNOLLES NA NA 020718-0800-C 列也是driver,我不想将NA用作字符,而是只想返回{{1 }}。

我的想法是使用NA函数,但只是不知道如何解决前13个字母并串联到ref的问题。

ifelse

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

您要与substr一起使用paste0

df1$ID <- ifelse(is.na(df1$tour), 
            paste0(substr(df1$ref, 1, 13), ifelse(is.na(df1$driver), "", df1$driver)), 
              df1$tour)

 "02062018-1130Mark" "02162018-1230John" "02067018-1300Sam"  "678"  "020718-0800-C"