Подсчет строк каждого конкретного символа - PullRequest
0 голосов
/ 22 мая 2018

Уважаемые коллеги! У меня есть набор данных с несколькими столбцами, которые указывают номер машины и количество записанных переменных, например:

Machine           Name1(A01)  Name2(A02)  Name3(A03)  ...    Name1(A01)
Signal            Signal1     Signal 1    Signal 1    ...    Signal124
Timestamp Unit    Unit        Unit        Unit
2017-11-01 00:00  value1      value1
2017-11-01 00:30  value2      value2
2017-11-01 01:00    .
      .             .
      .             .

Я хотел бы знать, возможно ли отфильтровать значенияsignalX по номеру (Ayx) и хранить эти значения в матрице.

В основном я должен хранить значения, такие как:

filter the values

Signal1[i,j]=
Signal2[i,j]=

Будучи я количество машин и t метка времени

1 Ответ

0 голосов
/ 22 мая 2018

Если я правильно понял ваш вопрос, то одним из подходов может быть

library(tidyverse)

df1 <- t(df) %>%
  data.frame(stringsAsFactors = F) %>%
  rownames_to_column() %>%
  `colnames<-`(.[1,]) %>%
  filter(row_number()!=1) %>%
  gather(Timestamp, signal_value, -Machine, -Signal, -Timestamp_unit)

, который выдаст

> df1
   Machine    Signal Timestamp_unit        Timestamp signal_value
1      A01   Signal1           Unit 2017-11-01 00:00       value1
2      A02   Signal1           Unit 2017-11-01 00:00     value1_1
3      A03   Signal2           Unit 2017-11-01 00:00     value1_2
4      A04 Signal124           Unit 2017-11-01 00:00     value1_3
5      A01   Signal1           Unit 2017-11-01 00:30       value2
6      A02   Signal1           Unit 2017-11-01 00:30     value2_1
7      A03   Signal2           Unit 2017-11-01 00:30     value2_2
8      A04 Signal124           Unit 2017-11-01 00:30     value2_3
9      A01   Signal1           Unit 2017-11-01 01:00       value3
10     A02   Signal1           Unit 2017-11-01 01:00     value3_1
11     A03   Signal2           Unit 2017-11-01 01:00     value3_2
12     A04 Signal124           Unit 2017-11-01 01:00     value3_3

Теперь вы можете легко запросить желаемое значение как

df1[df1$Signal=='Signal1' & df1$Machine=='A02' & df1$Timestamp=='2017-11-01 00:00', "signal_value"]
#[1] "value1_1"

Пример данных

df <- read.table(text="Machine       A01         A02      A03      A04
                 Signal              Signal1     Signal1  Signal2  Signal124
                 Timestamp_unit      Unit        Unit     Unit     Unit
                 '2017-11-01 00:00'  value1      value1_1 value1_2 value1_3
                 '2017-11-01 00:30'  value2      value2_1 value2_2 value2_3
                 '2017-11-01 01:00'  value3      value3_1 value3_2 value3_3", header=T, stringsAsFactor=F)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...