Как объединить несколько столбцов в R

Предположим, у меня есть этот набор данных:

     age      height       weight
   "1/2/3"  "12/15/18"   "30/40/37"

Как я могу получить набор данных, подобный набору данных ниже?

   age height weight
    1    12     30
    2    15     40
    3    18     37

А что, если бы мой набор данных был таким:

  name     age      height       weight
 "Jack"  "1/2/3"  "12/15/18"   "30/40/37"

Я хочу иметь набор данных, как показано ниже:

    name  age height weight
   "Jack"  1    12     30
   "Jack"  2    15     40
   "Jack"  3    18     37

Как я могу это сделать?

Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
1
0
26
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Если ваши данные в формате фрейма данных, как это:

df <- data.frame(age = '1/2/3', height = '12/15/18', weight = '30/40/37')

df
#>     age   height   weight
#> 1 1/2/3 12/15/18 30/40/37

Вы могли бы сделать

as.data.frame(lapply(df, function(x) as.numeric(unlist(strsplit(x, '/')))))
#>   age height weight
#> 1   1     12     30
#> 2   2     15     40
#> 3   3     18     37

Тот же код будет работать, если ваши данные являются именованным вектором (из вопроса неясно, в каком формате находятся ваши данные, но приведенный выше код должен работать в любом случае, если ваши данные называются df)

Created on 2022-04-10 by the reprex package (v2.0.1)

Большое спасибо. Я внес изменение в свой вопрос. Я очень ценю, если вы ответите и на этот вопрос.

Mina 10.04.2022 13:35
Ответ принят как подходящий

Если вы не возражаете против использования внешнего пакета, вы можете использовать separate_rows() из пакета tidyr.

library(tidyverse)

df %>% separate_rows(-name, sep = "/")

# A tibble: 3 × 4
  name  age   height weight
  <chr> <chr> <chr>  <chr> 
1 Jack  1     12     30    
2 Jack  2     15     40    
3 Jack  3     18     37    

Я всегда использую tidyverse. Большое спасибо.

Mina 10.04.2022 13:40

@AllanCameron Ты прав. Мне так жаль. Я снова внес некоторые изменения, так что ваш ответ тоже правильный.

Mina 10.04.2022 13:49

Другие вопросы по теме