我正在閱讀具有3n列的表。現在我需要創建具有n + 1列的新表格。將任意數量的列組合到R中的新表中
新格式將是第一列,接着通過第三列第二分割,然後通過第五第六列劃分..
1.column 2./3. 5./6. 8./9. 11./12.
使得本:
a b c d e f g h i
將變得
a b/c e/f h/i
我正在閱讀具有3n列的表。現在我需要創建具有n + 1列的新表格。將任意數量的列組合到R中的新表中
新格式將是第一列,接着通過第三列第二分割,然後通過第五第六列劃分..
1.column 2./3. 5./6. 8./9. 11./12.
使得本:
a b c d e f g h i
將變得
a b/c e/f h/i
cbind(df[, 1], df[, seq(from = 2, to = ncol(df), by = 3)]/
df[, seq(from = 3, to = ncol(df), by = 3)])
爲了使效果明顯,這裏是在i
列裝滿i
一個例子data.frame
:
d <- data.frame(matrix(rep(1:9, each=5), 5))
# X1 X2 X3 X4 X5 X6 X7 X8 X9
# 1 1 2 3 4 5 6 7 8 9
# 2 1 2 3 4 5 6 7 8 9
# 3 1 2 3 4 5 6 7 8 9
# 4 1 2 3 4 5 6 7 8 9
# 5 1 2 3 4 5 6 7 8 9
現在,我們將在第一列,然後每列(3I-1)列(3I)分對於i = 1,2,...所以第一個是(3-1)/(3),第二個是(6-1)/(6)等。這裏是做一種方式:
cbind(d[,1], do.call(cbind, lapply(1:(ncol(d)/3), function(i) d[,i*3-1]/d[,i*3])))
要麼會產生:
# [,1] [,2] [,3] [,4]
# [1,] 1 0.6666667 0.8333333 0.8888889
# [2,] 1 0.6666667 0.8333333 0.8888889
# [3,] 1 0.6666667 0.8333333 0.8888889
# [4,] 1 0.6666667 0.8333333 0.8888889
# [5,] 1 0.6666667 0.8333333 0.8888889
其含有(1,2/3,5/6,8/9)從例如矩陣,驗證它做我們想要的。