R:从字符串中提取前13个字符,并与其他字符串连接
我有一个数据框R:从字符串中提取前13个字符,并与其他字符串连接,r,split,character,concatenation,R,Split,Character,Concatenation,我有一个数据框df,有三列ref,driver和tour ref driver tour 02062018-1130SGA->BRT-Buttes Chaumont Mark NA 02162018-1230BRT-A2Pas Courbevoie Marceau John NA 02067018-1300
df
,有三列ref
,driver
和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
,如果tour
是NA,它将ref
和driver
的前13个字母连接起来。如果tour不是NA,它只会在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
,我不想将NA
作为字符,而是只想返回ref
中的前13个字符
我的想法是使用ifelse
函数,但我不知道如何处理前13个字母并连接到Driver
df$ID <- ifelse(tour == NA,
yes = #####some function######,
no = tour)
df$ID您正在寻找与paste0
结合使用的substr
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"
df1$ID非常感谢您的快速回答!当驱动程序列为NA
时,它将NA
作为一个字符,结果类似于“02162018-1230NA”。但我只想要“02162018-1230”,不带NA
。我该如何处理这件事?对不起,我应该更清楚一些。我编辑了我的答案。在代码中添加了一个额外的ifelse