こんにちは、次の data.frame (追加) があります。正規化されたカウントを含む列を追加したいと思いますN = N/sum(N)
。日付列のない以前の data.frame があり、これを使用してこれを行うことができました
oo[, N.norm := N/sum(N), by=Operator]
by関数に日付を追加しようとしました
oo[, N.norm := N/sum(N), by=Operator,Date]
エラーメッセージが表示されます
Error in `[.data.frame`(oo, , `:=`(N.norm, N/sum(N)), by = Operator, Date) :
unused argument(s) (by = Operator)
たとえば、月「2013 年 1 月」の演算子「A」の場合、N
それぞれのカウント数ROI_SCore
= c("Good","OK","Poor","Crap") があります。その組み合わせ(Aと2013年1月)のNを合計し、カウントN
をsum(N)
別の注意として、Rでdata.framesを操作するためのまともな紹介を誰かに提供してもらえますか
structure(list(Operator = structure(c(1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L), .Label = c("A",
"D", "J", "L", "M"), class = "factor"), ROI_Score = structure(c(1L,
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 4L, 4L,
4L, 4L, 4L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L,
3L, 3L, 4L, 4L, 4L, 4L, 4L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L,
2L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 1L, 1L, 1L, 1L, 1L,
2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 1L,
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 4L, 4L,
4L, 4L, 4L), .Label = c("Crap", "Good", "OK", "Poor"), class = "factor"),
Date = c("Apr 2013", "Feb 2013", "Jan 2013", "Mar 2013",
"May 2013", "Apr 2013", "Feb 2013", "Jan 2013", "Mar 2013",
"May 2013", "Apr 2013", "Feb 2013", "Jan 2013", "Mar 2013",
"May 2013", "Apr 2013", "Feb 2013", "Jan 2013", "Mar 2013",
"May 2013", "Apr 2013", "Feb 2013", "Jan 2013", "Mar 2013",
"May 2013", "Apr 2013", "Feb 2013", "Jan 2013", "Mar 2013",
"May 2013", "Apr 2013", "Feb 2013", "Jan 2013", "Mar 2013",
"May 2013", "Apr 2013", "Feb 2013", "Jan 2013", "Mar 2013",
"May 2013", "Apr 2013", "Feb 2013", "Jan 2013", "Mar 2013",
"May 2013", "Apr 2013", "Feb 2013", "Jan 2013", "Mar 2013",
"May 2013", "Apr 2013", "Feb 2013", "Jan 2013", "Mar 2013",
"May 2013", "Apr 2013", "Feb 2013", "Jan 2013", "Mar 2013",
"May 2013", "Apr 2013", "Feb 2013", "Jan 2013", "Mar 2013",
"May 2013", "Apr 2013", "Feb 2013", "Jan 2013", "Mar 2013",
"May 2013", "Apr 2013", "Feb 2013", "Jan 2013", "Mar 2013",
"May 2013", "Apr 2013", "Feb 2013", "Jan 2013", "Mar 2013",
"May 2013", "Apr 2013", "Feb 2013", "Jan 2013", "Mar 2013",
"May 2013", "Apr 2013", "Feb 2013", "Jan 2013", "Mar 2013",
"May 2013", "Apr 2013", "Feb 2013", "Jan 2013", "Mar 2013",
"May 2013", "Apr 2013", "Feb 2013", "Jan 2013", "Mar 2013",
"May 2013"), N = c(0, 0, 0, 0, 0, 1, 2, 15, 1, 5, 3, 2, 3,
1, 0, 3, 0, 5, 5, 1, 0, 0, 0, 1, 0, 14, 17, 16, 8, 7, 5,
10, 6, 1, 5, 24, 27, 31, 16, 15, 0, 0, 0, 0, 0, 26, 24, 20,
11, 18, 3, 4, 17, 3, 2, 20, 36, 12, 21, 9, 0, 0, 0, 0, 0,
3, 12, 5, 12, 4, 0, 0, 3, 4, 0, 29, 37, 41, 25, 10, 0, 0,
0, 0, 0, 9, 9, 15, 17, 3, 6, 4, 5, 4, 1, 14, 13, 9, 15, 9
)), .Names = c("Operator", "ROI_Score", "Date", "N"), row.names = c(NA,
100L), class = "data.frame")
データが data.frame 形式か data.table 形式かは不明です。これが、Arun によって提供されたソリューションから適応された私のコードです (正規化された棒グラフと円グラフを作成するためのデータ フレームの形状変更/再成形) 。
df <- data.frame(read.csv("/misc/jaguar_data/report/system/db_fs/roi_scores.csv"))
#Get date into nice structure for faceting
df$Date = strftime(strptime(df$Date,f="%d/%m/%Y"), "%b %Y")
dt <- data.table(df)
ops <- as.character(unique(dt$Operator))
scr <- as.character(unique(dt$ROI_Score))
dts <- unique(dt$Date)
oo <- setkey(dt[, .N, by="Operator,ROI_Score,Date"], Operator,
ROI_Score,Date)[CJ(ops, scr,dts)][is.na(N), N:= 0L]
oo[, N.norm := N/sum(N), by=Operator]