数据框中第一列中的strsplit中间模式

时间:2016-09-29 08:13:27

标签: r dataframe split apply sapply

我有一个数据框,我想将第一列拆分为两列,但是单独的模式与其他模式类似,我只想拆分位于数字4上的模式。

sapply(strsplit(as.character(df$ID), "-"), '[', 1:4)

我试过了:

Dirname[$i]

然而,它不是我想要的上面所需的输出。非常感谢你。

2 个答案:

答案 0 :(得分:3)

似乎第一列的所有元素都具有相同的长度,因此一种简单的方法可能是:

df <- data.frame(col1 = c("TCGA-TS-A7P1-01A-41D-A39S-05","TCGA-NQ-A57I-01A-11D-A34E-05","TCGA-3H-AB3O-01A-11D-A39S-05"),
                 col2 = c(0.8637304,0.7812147,0.8963944), stringsAsFactors = FALSE)

df$col1bis <- substr(df$col1,18,28)
df$col1 <- substr(df$col1,1,16)

然后我重新组合了列的顺序:

df <- df[, c(1,3,2)]

导致:

> df
              col1     col1bis      col2
1 TCGA-TS-A7P1-01A 41D-A39S-05 0.8637304
2 TCGA-NQ-A57I-01A 11D-A34E-05 0.7812147
3 TCGA-3H-AB3O-01A 11D-A39S-05 0.8963944

答案 1 :(得分:0)

我试过这个并且效果很好。

df <- cbind(df[,1],df)
df[,1] <- substr(df[,1],1,16)
df[,2] <- substr(df[,2],18,28)