0

私は「Sec1OSp」を持っています。これは次のようになります。

TIMEBLOCK   ep.HRC_E    ep.HRC_D    ep.HRCcm_E  ep.HRCcm_D
   1           NA          NA          NA          NA
   2           NA          NA          NA          NA
   3           NA          NA          NA          NA
   4           NA          NA          NA          NA
   5           NA          NA          NA          NA
   6           NA          5           5           5
   7           NA          5           10          5
   8           NA          5           20          5
   9           NA          5           20          5 
   10          NA          10          20          10
   11          20          10          20          10
   12          20          10          20          10
   13          20          NA          20          10
   14          20          NA          20          10
   15          10          NA          10          10
   16          10          NA          10          5
   17          NA          NA          NA          NA
   18          NA          NA          NA          NA
   19          NA          NA          NA          NA
   20          NA          NA          NA          NA
   21          NA          NA          NA          NA
   22          NA          NA          NA          NA
   23          NA          NA          NA          NA
   24          NA          NA          NA          NA

「data.EP.S1p」があります。これは次のようになります。

TIMEBLOCK   ep.HRC_E    ep.HRC_D    ep.HRCcm_E  ep.HRCcm_D
   1           NA          NA          NA          NA
   2           NA          NA          NA          NA
   3           NA          NA          NA          NA
   4           NA          NA          NA          NA
   5           NA          NA          NA          NA
   6           NA          NA          NA          NA
   7           NA          NA          NA          NA
   8           NA          NA          NA          NA
   9           NA          NA          NA          NA
   10          NA          NA          NA          NA
   11          20          NA          NA          NA
   12          20          NA          NA          NA
   13          20          NA          NA          NA
   14          20          NA          NA          NA
   15          10          NA          NA          NA
   16          10          NA          NA          NA
   17          NA          NA          NA          NA
   18          NA          NA          NA          NA
   19          NA          NA          NA          NA
   20          NA          NA          NA          NA
   21          NA          NA          NA          NA
   22          NA          NA          NA          NA
   23          NA          NA          NA          NA
   24          NA          NA          NA          NA

このコード(以下)は現在、Sec1OSp$ep.HRC_Eからの​​データを使用してdata.EP.S1p$ep.HRC_Eを埋めています。

  for(t in 1:24) {
    Sec1OSpt <- subset(Sec1OSp, TIMEBLOCK==t)
    Sec1OSptnonNArows <- Sec1OSpt[!is.na(Sec1OSpt$ep.HRC_E),]
    if(nrow(Sec1OSptnonNArows) > 0) {
      if(sum(Sec1OSptnonNArows$ep.HRC_E, na.rm=TRUE) > 0) {
        data.EP.S1p$ep.HRC_E[t] <- (sum(Sec1OSptnonNArows$ep.HRC_E, na.rm=TRUE)) / nrow(Sec1OSptnonNArows)
      }
      else {
        data.EP.S1p$ep.HRC_E[t] <- NA
      }
    }

このコードをループして4列すべてに適用し、Sec1OSpの4列を使用してdata.EP.S1pの4列を埋めることができるようにしたいと思います。誰かが私のための解決策を持っていますか?ありがとう。

4

1 に答える 1

0

私があなたを正しく理解しているなら、あなたは最初にの各値について4列の平均値を見つけていますTIMEBLOCK。関数を使用してそれを行うことができますaggregatedata.EP.S1pその後、を使用してそれらの値を入力できますmerge

Sec1OSp <- read.table(textConnection("TIMEBLOCK   ep.HRC_E    ep.HRC_D    ep.HRCcm_E  ep.HRCcm_D\n1           NA          NA          NA          NA\n2           NA          NA          NA          NA\n3           NA          NA          NA          NA\n4           NA          NA          NA          NA\n5           NA          NA          NA          NA\n6           NA          5           5           5\n7           NA          5           10          5\n8           NA          5           20          5\n9           NA          5           20          5\n10          NA          10          20          10\n11          20          10          20          10\n12          20          10          20          10\n13          20          NA          20          10\n14          20          NA          20          10\n15          10          NA          10          10\n16          10          NA          10          5\n17          NA          NA          NA          NA\n18          NA          NA          NA          NA\n19          NA          NA          NA          NA\n20          NA          NA          NA          NA\n21          NA          NA          NA          NA\n22          NA          NA          NA          NA\n23          NA          NA          NA          NA\n24          NA          NA          NA          NA"), 
    header = TRUE)

data.EP.S1p <- read.table(textConnection("TIMEBLOCK   ep.HRC_E    ep.HRC_D    ep.HRCcm_E  ep.HRCcm_D\n1           NA          NA          NA          NA\n2           NA          NA          NA          NA\n3           NA          NA          NA          NA\n4           NA          NA          NA          NA\n5           NA          NA          NA          NA\n6           NA          NA          NA          NA\n7           NA          NA          NA          NA\n8           NA          NA          NA          NA\n9           NA          NA          NA          NA\n10          NA          NA          NA          NA\n11          20          NA          NA          NA\n12          20          NA          NA          NA\n13          20          NA          NA          NA\n14          20          NA          NA          NA\n15          10          NA          NA          NA\n16          10          NA          NA          NA\n17          NA          NA          NA          NA\n18          NA          NA          NA          NA\n19          NA          NA          NA          NA\n20          NA          NA          NA          NA\n21          NA          NA          NA          NA\n22          NA          NA          NA          NA\n23          NA          NA          NA          NA\n24          NA          NA          NA          NA"), 
    header = TRUE)


avgdata <- aggregate(Sec1OSp[, 2:5], by = list(Sec1OSp$TIMEBLOCK), FUN = function(x) mean(x, na.rm = TRUE))
names(avgdata)[1] <- "TIMEBLOCK"
avgdata
##    TIMEBLOCK ep.HRC_E ep.HRC_D ep.HRCcm_E ep.HRCcm_D
## 1          1      NaN      NaN        NaN        NaN
## 2          2      NaN      NaN        NaN        NaN
## 3          3      NaN      NaN        NaN        NaN
## 4          4      NaN      NaN        NaN        NaN
## 5          5      NaN      NaN        NaN        NaN
## 6          6      NaN        5          5          5
## 7          7      NaN        5         10          5
## 8          8      NaN        5         20          5
## 9          9      NaN        5         20          5
## 10        10      NaN       10         20         10
## 11        11       20       10         20         10
## 12        12       20       10         20         10
## 13        13       20      NaN         20         10
## 14        14       20      NaN         20         10
## 15        15       10      NaN         10         10
## 16        16       10      NaN         10          5
## 17        17      NaN      NaN        NaN        NaN
## 18        18      NaN      NaN        NaN        NaN
## 19        19      NaN      NaN        NaN        NaN
## 20        20      NaN      NaN        NaN        NaN
## 21        21      NaN      NaN        NaN        NaN
## 22        22      NaN      NaN        NaN        NaN
## 23        23      NaN      NaN        NaN        NaN
## 24        24      NaN      NaN        NaN        NaN

data.EP.S1p <- merge(data.EP.S1p[, "TIMEBLOCK", drop = FALSE], avgdata, all.x = TRUE)
data.EP.S1p
##    TIMEBLOCK ep.HRC_E ep.HRC_D ep.HRCcm_E ep.HRCcm_D
## 1          1      NaN      NaN        NaN        NaN
## 2          2      NaN      NaN        NaN        NaN
## 3          3      NaN      NaN        NaN        NaN
## 4          4      NaN      NaN        NaN        NaN
## 5          5      NaN      NaN        NaN        NaN
## 6          6      NaN        5          5          5
## 7          7      NaN        5         10          5
## 8          8      NaN        5         20          5
## 9          9      NaN        5         20          5
## 10        10      NaN       10         20         10
## 11        11       20       10         20         10
## 12        12       20       10         20         10
## 13        13       20      NaN         20         10
## 14        14       20      NaN         20         10
## 15        15       10      NaN         10         10
## 16        16       10      NaN         10          5
## 17        17      NaN      NaN        NaN        NaN
## 18        18      NaN      NaN        NaN        NaN
## 19        19      NaN      NaN        NaN        NaN
## 20        20      NaN      NaN        NaN        NaN
## 21        21      NaN      NaN        NaN        NaN
## 22        22      NaN      NaN        NaN        NaN
## 23        23      NaN      NaN        NaN        NaN
## 24        24      NaN      NaN        NaN        NaN
于 2013-03-13T01:21:34.643 に答える