Из таблицы Excel в фрейм данных в R - PullRequest
0 голосов
/ 20 мая 2019

Мне нужно сгенерировать фрейм данных в R из приведенной ниже таблицы Excel.

enter image description here

Каждый раз, когда я изменяю одно из значений из столбца Значение переменная Оценка будет иметь другое значение (ячейка защищена, поэтому я не вижу формула).

Идея состоит в том, чтобы сгенерировать достаточно выборок, чтобы проверить основные источники изменчивости и выполнить некоторые основные статистические данные.

Я думаю, что единственным способом было бы вручную изменить переменные в столбце Значение и аннотировать результат из Score в кадре данных.

Основная проблема У меня возникает проблема в том, что я не привык работать с данными, имеющими этот формат, и из-за этого мне трудно представить, как мне следует структурировать Фрейм данных.

Я застреваю, потому что переменная Оценка зависит от 5 различных Стадий (где каждая из них имеет 2 разные переменные) и набора измерений с 7 различными переменными.

Я пытался использовать способ создания фреймов данных, начиная с «Векторов», но это неправильно, и я не вижу, как я могу представить эти отношения между различными переменными.

            stage <- c('Inspection','Cut','Assembling','Test','Labelling','Dimensions')

    variables <- c('Experience level', 'Equipement', 'User','Length','Wide','Length Body','Width Body','Tape Wing','Tape Body','Clip)

range <- c('b','m','a','UA','UB','UC') ?? not sure what to do about the range??

Может ли кто-нибудь помочь мне с логикой о том, как это должно быть смоделировано?

1 Ответ

2 голосов
/ 20 мая 2019

Как предлагает @Gregor, для решения вашей основной проблемы рассмотрите возможность создания фрейма данных всех необходимых значений в соответствующих столбцах. Затем запустите каждую строку, чтобы получить Оценка .

В частности, для построения необходимого фрейма данных из входных данных в таблице Excel, рассмотрим конструктор Map (оболочка для mapply) и data.frame в списке одинаковой длины или векторы из 17 элементов:

Входы в таблицу Excel

# VECTOR OF 17 CHARACTER ITEMS
stage_list <- c(rep("Inspection", 2),
                rep("Cut", 2),
                rep("Assembling", 2),
                rep("Test", 2),
                rep("Labelling", 2),
                rep("Dimensions", 7))

# VECTOR OF 17 CHARACTER ITEMS
exp_equip <- c("Experience level", "Equipement")

var_list <- c(rep(exp_equip, 3),
              c("User", "Equipement"),
              exp_equip,
              c("Length", "Wide", "Length body", "Width body",
                "Tape wing", "Tape body", "Clip"))

# LIST OF 17 VECTORS
bma_range <- c("b", "m", "a")
noyes_range <- c("no", "yes")

range_list <- c(replicate(6, bma_range, simplify=FALSE),
                list(c("UA", "UB", "UC")),
                replicate(3, bma_range, simplify=FALSE),
                list(seq(6.5, 9.5, by=0.1)), 
                list(seq(11.9, 12.1, by=0.1)),
                list(seq(6.5, 9.5, by=0.1)),
                list(seq(4, 6, by=1)),
                replicate(3, noyes_range, simplify=FALSE))

Map + data.frame

df_list <- Map(function(s, v, r) 
               data.frame(Stage = s, Variable = v, Range = r, stringsAsFactors=FALSE), 
               stage_list, var_list, range_list, USE.NAMES = FALSE)

# APPEND ALL DFS
final_df <- do.call(rbind, df_list)
head(final_df)
#        Stage         Variable Range
# 1 Inspection Experience level     b
# 2 Inspection Experience level     m
# 3 Inspection Experience level     a
# 4 Inspection       Equipement     b
# 5 Inspection       Equipement     m
# 6 Inspection       Equipement     a       

Rextester demo


Расчет баллов (с использованием неизвестной функции Score_, предполагается, что она принимает три необязательных аргумента)

# VECTORIZED METHOD
final_df$Score <- score_function(final_df$Stage, final_df$Variable, final_df$Range)

# NON-VECTORIZED/LOOP ROW METHOD
final_df$Score <- sapply(1:nrow(final_df), function(i) 
                         score_function(final_df$Stage[i], final_df$Variable[i], final_df$Range[i])

# NON-VECTORIZED/LOOP ELEMENTWISE METHOD
final_df$Score <- mapply(score_function, final_df$Stage, final_df$Variable, final_df$Range)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...