我有一个数据框,我想将第一列拆分为两列,但是单独的模式与其他模式类似,我只想拆分位于数字4上的模式。
sapply(strsplit(as.character(df$ID), "-"), '[', 1:4)
我试过了:
Dirname[$i]
然而,它不是我想要的上面所需的输出。非常感谢你。
答案 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)