3

私はこのようなデータフレームを持っています:

   A   B   Ind
1 10   8     1
2  9  10     2
3  7   1     2
4 19  20     1
5  .   .     .

値に基づいて列を合計するにはどうすればよいIndですか?の場合Ind==1、列からの合計A、の場合Ind==2、列からの合計B。たとえば、最初の4行の出力は、である必要があります10+10+1+19=30。ここで、最初の10はにA、2番目の10はにB、3番目の1はにB、4番目の19はにありAます。

4

3 に答える 3

6

使用する別のオプションI

 sum(with(dat,A*I(Ind==1)+B*(Ind==2)))
于 2013-03-20T16:45:12.620 に答える
4

data.frameの名前が「mydf」であるとするとifelse、次のように使用できます。

sum(with(mydf, ifelse(Ind == 1, A, B)))

ifelseパーツの結果は次のとおりです。

> with(mydf, ifelse(Ind == 1, A, B))
[1] 10 10  1 19

もちろん、複数の条件がある場合は、必要に応じてそれらをネストできます。


基本的なサブセット化を使用する、より詳細な代替案を次に示します。

sum(with(mydf, c(mydf[Ind == 1, "A"], mydf[Ind == 2, "B"])))
于 2013-03-20T16:36:26.163 に答える
0

を使用したソリューションwhich

sum( df$A[which(df$Ind==1)] , df$B[which(df$Ind==2)] )
于 2016-06-12T22:24:52.053 に答える