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