Как хранить разные, но одинаковые типы значений в кадре данных в R? - PullRequest
0 голосов
/ 27 февраля 2019

Я только что столкнулся с этой проблемой, и я не слишком уверен, как подойти к ней.Допустим, у меня есть 2 типа значений как таковых, в настоящее время они хранятся в R как каждое независимое значение.enter image description here

Как создать фрейм данных, в котором можно получить что-то вроде:

Value_Number      Type      Value
     01            A          1
     02            A          1
     03            A          1
     04            A          1
     05            A          1
     01            B          1
     02            B          2
     03            B          3
     04            B          4
     05            B          5

1 Ответ

0 голосов
/ 27 февраля 2019

Вот решение tidyverse.

  • Сначала я создаю исходные данные.
  • Затем я создаю фрейм данных из этих данных на основе их имен.
    • Я перечисляю имена переменных путем поиска шаблона "Value" (ls(pattern = "Value")).
    • Я также извлекаю их значения, используя get.
  • Затем я загружаю библиотеки для dplyr и tidyr.
  • Я делю Value_Number на две части и помещаю полученные значения в Type и Value_Number.
  • Наконец, я снимаю Value с передней части каждого Type, используя sub.
# Initial data 
ValueA_01 <- 1
ValueA_02 <- 2
ValueA_03 <- 3
ValueA_04 <- 4
ValueA_05 <- 5
ValueB_01 <- 1
ValueB_02 <- 2
ValueB_03 <- 3
ValueB_04 <- 4
ValueB_05 <- 5

# Create data frame
df <- data.frame(Value_Number = ls(pattern = "Value"), 
                 Value = unlist(lapply(ls(pattern = "Value"), get)))

# Load library
library(dplyr)
library(tidyr)
library(magrittr)

# Separate
df %<>% 
  separate(Value_Number, c("Type", "Value_Number")) %>% 
  mutate(Type = sub("Value", "", Type))
#>    Type Value_Number Value
#> 1     A           01     1
#> 2     A           02     2
#> 3     A           03     3
#> 4     A           04     4
#> 5     A           05     5
#> 6     B           01     1
#> 7     B           02     2
#> 8     B           03     3
#> 9     B           04     4
#> 10    B           05     5

Создано в 2019-02-27 с помощью представпакет (v0.2.1)

...