3

現在、次のコードを使用してcsvファイルを入力し、1つの列に基づいてデータポイントをプロットし、CpK番号を変数に保存しています。このコードは、データセット全体の CpK を計算するために機能し、グラフも同様に機能します。データセット内の各月の CpK 数を計算しようとしています (グラフ化は必要ありません)。data.table のドキュメントや他の R のドキュメントを調べましたが、各月のデータだけを選択するのに苦労しました。

現在のコード: (1 つの式で CpK を計算することもできましたが、意図的に分割しています)

mydf <- read.csv('ID35.csv', header = TRUE, sep=",")
date <- strptime(mydf$DATETIME, "%Y/%m/%d %H:%M:%S")
plot(date,mydf$AVG,xlab='Date',ylab='AVG',main='Data')
abline(h=mydf$MIN,col=3,lty=1)
abline(h=mydf$MAX,col=3,lty=1)
grid(NULL,NULL,col="black")
legend("topright", legend = c(" ", " "), text.width = strwidth("1,000,000"), lty = 1:2, xjust = 1, yjust = 1, title = "Points")
myavg <-mean(mydf$AVG, na.rm=TRUE)
newds <- (mydf$AVG - myavg)^2
newsum <- sum(newds, na.rm=TRUE)
N <- length(mydf$AVG) - 1
newN <- 1/N
total <- newN*newsum
sigma <- total^(1/2)
USL <- mean(mydf$MAX, na.rm=TRUE)
LSL <- mean(mydf$MIN, na.rm=TRUE)
cpk <- min(((USL-myavg)/(3*sigma)),((myavg-LSL)/(3*sigma)))
cpk

データセットは次のようになります (日付の書式設定は既に行われています)。

mydf (24/1000 行のみ):

Code           DATETIME AVG MIN TARG_AVG MAX
N9 2012/04/10 14:03:37   0.2647     0.22     0.25     0.27
NA 2012/03/30 07:48:17   0.2589     0.22     0.25     0.27
NB 2012/03/24 19:23:08   0.2912     0.22     0.25     0.27
NB 2012/03/25 16:10:17   0.2659     0.22     0.25     0.27
NC 2012/04/10 00:58:29   0.2622     0.22     0.25     0.27
ND 2012/04/14 18:32:52   0.2600     0.22     0.25     0.27
NG 2012/04/21 14:47:47   0.2671     0.22     0.25     0.27
NH 2012/04/09 20:31:17   0.2648     0.22     0.25     0.27
NL 2012/04/24 07:28:17   0.2527     0.22     0.25     0.27
NP 2012/04/23 13:26:50   0.2640     0.22     0.25     0.27
NQ 2012/04/14 20:30:42   0.2590     0.22     0.25     0.27
NS 2012/05/02 09:09:52   0.2651     0.22     0.25     0.27
NU 2012/05/04 13:07:49   0.2688     0.22     0.25     0.27
NV 2012/05/19 23:07:08   0.2716     0.22     0.25     0.27
NX 2012/05/03 02:00:13   0.2670     0.22     0.25     0.27
NY 2012/05/04 12:56:52   0.2680     0.22     0.25     0.27
NZ 2012/05/06 10:05:38   0.2697     0.22     0.25     0.27
O0 2012/05/07 22:01:11   0.2675     0.22     0.25     0.27
O3 2012/06/21 18:09:47   0.2606     0.22     0.25     0.27
04 2012/06/21 18:47:36   0.2545     0.22     0.25     0.27
51 2012/07/24 21:13:08   0.2541     0.22     0.25     0.27
O5 2012/07/26 16:54:09   0.2575     0.22     0.25     0.27
O6 2012/07/20 02:42:29   0.2603     0.22     0.25     0.27
OD 2012/08/25 20:56:55   0.2559     0.22     0.25     0.27
OH 2012/08/28 10:30:11   0.2372     0.22     0.25     0.27

上の表から、私が気にかけているのは DATETIME と AVG の 2 つの列だけです。各月の新しい "myavg" 変数を取得したら、同じ式を使用して CpK 値を計算できます。変数名は「2012/08」のようなものになると思います。コードは次のようになるはずです。

for(each month mydf$DATETIME) (date like 2012/04*,2012/05*)
monthavg <-(mydf$AVG, na.rm=TRUE)

アクセス可能な変数に各月の CpK 値を格納する方法はありますか?

4

1 に答える 1

1
aggregate(mydf$AVG, list(month=months(as.Date(mydf$DATETIME))), mean)

#    month         x
# 1  April 0.2618125
# 2 August 0.2465500
# 3   July 0.2573000
# 4   June 0.2575500
# 5  March 0.2720000
# 6    May 0.2682429
于 2012-08-31T16:15:35.433 に答える