1

私はdfを持っています:

Q1_3  Q2_3  Q3_3  Q4_3  Q5_3 ...  
16.01  8.23 18.13 11.14 18.03 ...  
17.25  7.50 11.72 10.84  7.24 ...  
3.08  2.12  4.39  3.16  2.44 ...    
4.94  3.95  6.87  3.75  4.10 ...  
3.89  8.35  7.80  2.90  2.55 ...  

df[1:5]、[6:10] などを順次追加し、これをデータ フレーム全体に適用する関数を作成したいと思います。

fun1<- function(x) c(x[1] + x[2], x[3] + x[4], x[5] + x[6], x[7] + x[8], x[9] + x[10], x[11] + x[12], x[13] + x[14]) 

これを使用して必要な別のものを実行しましたが、seq() または rep() を使用して df 全体に適用する方法が必要だと思います。

testfun<- function(x) c(rowSums(x[1:5])) 

これにより、必要な列が追加されますが、df 全体で順序付けする方法がわかりません。よろしくお願いします。

ありがとう

4

2 に答える 2

2

シーケンスをループし ( seq(1, ncol(df1), by =5))、インデックスを作成し ( i:(i+4))、データセットをサブセット化し、rowSums元のデータセットで を実行しcbindます。

cbind(df1, sapply(seq(1, ncol(df1), by=5), function(i)
                rowSums(df1[i:pmin((i+4), ncol(df1))], na.rm=TRUE)))

関数が必要な場合

f1 <- function(dat, n=5){
       cbind(dat, sapply(seq(1, ncol(dat), by = n), function(i)
             rowSums(dat[i:pmin((i+(n-1)), ncol(dat))], 
               na.rm=TRUE)))
       }
f1(df1) 
于 2015-11-20T12:54:16.790 に答える