Rでは、同じ値の列(同じ文字でグループ化されたもの)の合計から値の列(列 't1'の文字でグループ化されたもの)の合計を差し引きたい列「t2」)。すべての手紙と毎年のグループについてこのプロセスを繰り返します。複数のグループごとにデータフレーム列の差異を見つける
set.seed(3)
df <- data.frame(age = rep(1:3,each=25),
t1 = rep(expand.grid(LETTERS[1:5],LETTERS[1:5])[,1],3),
t2 = rep(expand.grid(LETTERS[1:5],LETTERS[1:5])[,2],3),
value = sample(1:10,75,replace=T))
このデータフレームは、「年齢」列に3つの値、カテゴリ(t1およびt2)および関連する値(値)を持つ2つの列を示します。一例として、
は、ここでは「A」のために働くかもしれない方法である:
library(plyr);
# extract rows with A
df2 <- df[df$t1=="A" | df$t2=="A",]
# remove where t1 and t2 are the same (not needed)
df2 <- df2[df2$t1 != df2$t2,]
# use ddply to subtract sum of 'value' for A in t1 from t2
df2 <- ddply(df2, .(age), transform, change = sum(value[t2=="A"])-sum(value[t1=="A"]))
# create a name
df2$cat <- "A"
# remove all the duplicate rows, just need one summary value
df2 <- df2[ !duplicated(df2$change), ]
# keep summary data
df2 <- df2[,c(1,6,5)]
は今、私はこのケースではT1とT2で発生するすべての値(A、Bのためにこれを行う必要があり、 C & D)、12行の要約を作成します。
私はループを試しました。
for (c in as.character(unique(df$t1)))
しかしnowehere
おかげ
私は何かが不足していると思います...どうすればt1またはt2から値を減算できますか?これらの列は文字です。 –
説明がわかりません。 (ある意味では、 "A"は通常の意味ではデータの変数ではありません)。期待される結果を含むdf_outを提供するだけかもしれません。 – Frank
申し訳ありませんが、それは私の貧しい説明かもしれません。ここで、t2 = Aであり、次に、「値」を合計し、t1 = Aであれば合計「値」である。前者から後者を引く。毎年のグループごとにユニークな手紙ごとに繰り返す。 – Sam