Преобразуйте продольные данные с переменными времени из широкого в длинный формат в r

Это происходит потому, что атрибуты доступа , (. и []) преобразуют значение ToObject .

Что-то подобное этому происходит за кадром:

var a="abc";
new Object(a).b = 123;  
alert(a.b); // undefined

В принципе, объект создается «на лету» с помощью аксессуаров свойств, см. Шаг 5:

Произведение MemberExpression: MemberExpression [ Expression ] ( или MemberExpression . Identifier) оценивается следующим образом:

  1. Оценить MemberExpression.
  2. Вызов GetValue(Result(1)).
  3. Вычислить выражение.
  4. Вызов GetValue(Result(3)).
  5. Вызов ToObject(Result(2)).
  6. Вызов ToString(Result(4)).
  7. Возвращает значение типа Reference, базовый объект которого Результат (5) и имя свойства которого Result(6).

0
задан Fino 19 February 2019 в 15:02
поделиться

1 ответ

Это также должно распространяться на большее количество случаев (например, время3, измерение3, время4, измерение4 и т. Д.) При условии, что каждый из них заканчивается цифрой. Хитрость заключается в том, чтобы сначала gather() поднять все столбцы без переменных, а затем separate() с тщательно выбранным аргументом sep.

library(tidyverse)

df %>%
  gather(key, value, -id) %>%
  separate(key, c("var", "num"), sep = "(?=[[:digit:]])") %>%
  spread(var, value) %>%
  arrange(id) %>%
  select(-num)
0
ответ дан JasonAizkalns 19 February 2019 в 15:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: