4

私はRの初心者で、各行の選択された列の合計を計算する助けを求めています. 私の単純なデータフレームは以下の通りです。

data = data.frame(location = c("a","b","c","d"),
            v1 = c(3,4,3,3), v2 = c(4,56,3,88), v3 =c(7,6,2,9), v4=c(7,6,1,9),
            v5 =c(4,4,7,9), v6 = c(2,8,4,6))

新しいデータ フレームの各行について、列 V1 から V3 および V4 から V6 の合計が必要です。

   x1   x2
a  14   13   
b  66   18
c
d

以下のようなことをしました。

rowSums(data[,2:4][,5:7])

しかし、私のコードには何か問題があるはずです。助けてくれてありがとう。

4

7 に答える 7

7

私の感覚では、dply を使用することです。

require(dply)
data %>% mutate(v2v4 = rowSums(.[2:4])) %>% mutate(v4v6 = rowSums(.[5:7])) %>% select(-(location:v6))

結果:

> newDf <- data %>% mutate(v2v4 = rowSums(.[2:4])) %>% mutate(v4v6 = rowSums(.[5:7])) %>% select(-(location:v6))
> newDf
  v2v4 v4v6
1   14   13
2   66   18
3    8   12
4  100   24
于 2016-05-07T07:18:19.980 に答える
1

2 つの合計を明示的に指定します。

cbind(x1=rowSums(data[,c('v1','v2','v3')]),x2=rowSums(data[,c('v4','v5','v6')]));
##       x1 x2
## [1,]  14 13
## [2,]  66 18
## [3,]   8 12
## [4,] 100 24
于 2016-05-07T06:49:21.150 に答える
0

splitデータセットを に変換して、でlist使用できます。Reducef="+"

sapply(split.default(data[-1], rep(paste0("x", 1:2), each=3)), Reduce, f=`+`)
#     x1 x2
#[1,]  14 13
#[2,]  66 18
#[3,]   8 12
#[4,] 100 24
于 2016-05-07T06:52:50.140 に答える