dplyr
を使用して任意の操作を行うことができます。
データフレーム
df
として、あなたのデータを使用して
library(dplyr)
res <- df %>% group_by(PIN) %>% mutate(Total=sum(Balance))
::私たちは、最初group_by
PIN
、その後、グループ化されたBalance
の和であるmutate
を使用して新しい列Total
作成
df <- structure(list(PIN = c(221L, 221L, 221L, 554L, 554L, 643L, 643L
), Balance = c(5000L, 2000L, 1000L, 4000L, 4500L, 6000L, 4000L
)), .Names = c("PIN", "Balance"), class = "data.frame", row.names = c(NA,
-7L))
## PIN Balance
##1 221 5000
##2 221 2000
##3 221 1000
##4 554 4000
##5 554 4500
##6 643 6000
##7 643 4000
を我々は期待される結果を得ます:
print(res)
##Source: local data frame [7 x 3]
##Groups: PIN [3]
##
## PIN Balance Total
## <int> <int> <int>
##1 221 5000 8000
##2 221 2000 8000
##3 221 1000 8000
##4 554 4000 8500
##5 554 4500 8500
##6 643 6000 10000
##7 643 4000 10000
またはdata.table
:
library(data.table)
setDT(df)[,Table:=sum(Balance),by=PIN][]
## PIN Balance Total
##1: 221 5000 8000
##2: 221 2000 8000
##3: 221 1000 8000
##4: 554 4000 8500
##5: 554 4500 8500
##6: 643 6000 10000
##7: 643 4000 10000
をあなたは何を試してみましたか? – mtoto
2番目の列の3番目の行が入力と出力で同じではありません。 –