2

私は次のようなデータを持っています

set.seed(6)
df <- data.frame(t = as.Date("2014/1/1")+seq(0,100.25,.25),
    name = paste(sample(c("Alert_","NonOp_"),402,replace=TRUE),
                  sample(1:10,402,replace=TRUE),sep=""),
    unit = c(rep(1:10,each=40),10,10))
head(df)

代表的なデータはこちら

head(df)
            t     name   unit
1  2014-01-01  NonOp_3      1
2  2014-01-01  NonOp_6      1
3  2014-01-01  Alert_5      1
4  2014-01-01  Alert_7      1
5  2014-01-02  NonOp_4      1
6  2014-01-02  NonOp_2      1

名前からテーブルを生成する方法。テーブルには単位 t の列があり、名前列の名前は Alert/NonOp なしで因数分解された名前の列に強制され、因数分解された名前列の値は NA である必要があります。 、A (アラートの場合)、および N (NonOp の場合)。上記のすべての数字がユニット 1 の場合、これが私が探しているテーブルのタイプです。

unit               t   name_1 name_2 name_3 name_4 name_5 name_6 name_7 name_8 ...
   1      2014-01-01       NA     NA      N     NA      A      A      A     NA
   1      2014-01-02       NA      N     NA      N     NA     NA     NA     NA

目標は、名前付きアラート/非運用をユニット/ t で順序付けられたテーブルに入れ、そのテーブルをファイルに書き込むことです。そしてファイルをエクセルに読み込みます。

4

2 に答える 2

1

使用することもできますdplyr

library(dplyr)
library(tidyr)
res <- df %>% 
separate(name, c("V1", "V2")) %>%
mutate(V1=substr(V1, 1, 1), V2 =paste0("name_", V2)) %>%
select(-unit) %>% 
spread(key=V2, value=V1) 

library(gtools)
res1 <- res[,c(1,mixedorder(names(res)[-1])+1)]
 head(res1,2)
  #         t name_1 name_2 name_3 name_4 name_5 name_6 name_7 name_8 name_9
 #1 2014-01-01   <NA>   <NA>      N   <NA>   <NA>   <NA>   <NA>   <NA>   <NA>
 #2 2014-01-01   <NA>   <NA>   <NA>   <NA>   <NA>      N   <NA>   <NA>   <NA>
 # name_10
 #1    <NA>
 #2    <NA>
于 2014-09-16T18:54:50.550 に答える