R将文本字符串拆分为最后和第一个元素

时间:2014-05-05 04:01:37

标签: r

我正在寻求帮助,我可以将复杂名称列拆分为2列,用于名字和姓氏。

 df <- data.frame( PREFIX=c("A_B","A_C","A_D","B_A","A_B_C","B_D_E","C_B_A","B_A"),
         VALUE=c(1,2,3,4,5,6,7,8) )

以下内容产生了任务的第一部分,但是当我对剩余字符串有不同的模式时,我无法弄清楚如何选择最后一个元素

 # split PREFIX into new columns
 df$name1 = as.character(lapply(strsplit(as.character(df$PREFIX), split="_"), "[", 1))

2 个答案:

答案 0 :(得分:6)

您可以使用tail获取最后一个元素:

df$name2 = as.character(lapply(strsplit(as.character(df$PREFIX), split="_"),
                        tail, n=1))
df
#   PREFIX VALUE name1 name2
# 1    A_B     1     A     B
# 2    A_C     2     A     C
# 3    A_D     3     A     D
# 4    B_A     4     B     A
# 5  A_B_C     5     A     C
# 6  B_D_E     6     B     E
# 7  C_B_A     7     C     A
# 8    B_A     8     B     A

答案 1 :(得分:1)

您还可以使用“贪婪”的正则表达式:

cbind(df, do.call(rbind, strsplit(as.character(df$PREFIX), "_|_.*_")))
#   PREFIX VALUE 1 2
# 1    A_B     1 A B
# 2    A_C     2 A C
# 3    A_D     3 A D
# 4    B_A     4 B A
# 5  A_B_C     5 A C
# 6  B_D_E     6 B E
# 7  C_B_A     7 C A
# 8    B_A     8 B A