R:如何根据R中的符号拆分特定列?

时间:2011-04-10 05:49:27

标签: r split

  

可能重复:
  Replacing ^ and | sybmbols in a matrix

previous message(替换矩阵中的^和|符号)中,讨论了删除列表中符号的方法。

这里我想只替换一个矩阵的一列(药物列)。例如:

Patient Hospital Drug Response
111     AAA      B+A  Good
222     CCC      B    Good
333     DDD      A+C  Bad+relapse

采用以下格式。

Patient Hospital Drug1 Drug2 Response
111     AAA      B     A     Good
222     CCC      B     NA    Good
333     DDD      A     C     Bad+relapse

使用R。

的方法是什么

2 个答案:

答案 0 :(得分:16)

像这样:

df <- data.frame(drug1 = c("B+A", "B", "A+C"))
df
df$drug2 <- lapply(strsplit(as.character(df$drug1), "\\+"), "[", 2)
df$drug1 <- lapply(strsplit(as.character(df$drug1), "\\+"), "[", 1)
df
所得

> df
  drug1 drug2
1     B     A
2     B    NA
3     A     C
> 

答案 1 :(得分:1)

一种可能的方法是使用函数strsplit

> clm
[1] "A+B" "B"   "A+C"
> strsplit(clm, "+")
[[1]]
[1] "A" "+" "B"

[[2]]
[1] "B"

[[3]]
[1] "A" "+" "C"