5
我有以下问题(如:TA应当分拆为两个栏,“A”,在第一个“T”第二),我可以解决:为了在分裂中的R
set.seed (1234)
mydf <- data.frame (var1a = sample (c("TA", "AA", "TT"), 5, replace = TRUE),
varb2 = sample (c("GA", "AA", "GG"), 5, replace = TRUE),
varAB = sample (c("AC", "AA", "CC"), 5, replace = TRUE)
)
mydf
var1a varb2 varAB
1 TA AA CC
2 AA GA AA
3 AA GA AC
4 AA AA CC
5 TT AA AC
我想分裂的两个字母进入不同的栏目,然后按字母顺序排列。例如var1a值“TA”var1a应该是“AT”或者在分割之后使得var1aa应该是“A”,并且var1ab是“T”(而不是“T”)。 , “一个”)。 所以排序是在每个单元格内。
split_col <- function(.col, data){
.x <- colsplit(data[[.col]], names = paste0(.col, letters[1:2]))
}
分每一列,并结合
require(reshape)
splitdf <- do.call(cbind, lapply(names(mydf), split_col, data = mydf))
var1aa var1ab varb2a varb2b varABa varABb
1 T A A A C C
2 A A G A A A
3 A A G A A C
4 A A A A C C
5 T T A A A C
但尚未解决的部分是我要订购一对列,使得列名“a”和columname“B”是有序的,按字母顺序。因此预期输出:
var1aa var1ab varb2a varb2b varABa varABb
1 A T A A C C
2 A A A G A A
3 A A A G A C
4 A A A A C C
5 T T A A A C
如何可以订购(短与每对变量的)?
你的意思是,在每对列的每行必须按字母顺序排序?如果是这样的话,你应该把这个陈述加入你的问题中,因为它很不明确。 – joran 2012-07-28 00:34:31
现在的问题是不连贯的。代码创建的数据框与您提供的示例不匹配。代码数据中只有2个'T'。此外,“按字母顺序排列”操作的性质还不清楚。你想按照顺序排列第一列 – 2012-07-28 00:38:17
你的'split_col'函数给了我一个错误:'错误is.character(模式):'pattern'丢失' – 2012-07-28 00:43:29