Как я могу добавить фрейм данных и добавить строку с повторяющейся информацией столбца меры в том же фрейме данных - PullRequest
0 голосов
/ 22 октября 2019

Итак, мне нужно понять, как я могу дублировать несколько полей в строке данных в df, за исключением вида (спецификации) и других мер длины, и добавить df к этому ряду информации и длины. len1 - длина каждого образца, но мне нужно преобразовать каждый показатель длины в его собственную строку в кадре данных, дублируя другие показатели (sal, DO, temp, mo, year). Я могу преобразовать пустые поля длины в "."чтобы помочь с кодированием, я знаю, но любые предложения относительно начальной точки или направления кодирования будут с благодарностью.

Я только сейчас возвращаюсь к реальному использованию R для работы вместо аспирантуры, так что я немногоржавый, но попадающий туда. При первом использовании stackoverflow прошу прощения, если я не следую некоторым нормам.

Начинаю знакомиться с dplyr и изменяйте форму, но любые библиотеки или руководства для чего-то подобного очень приветствуются.

year    mo  temp    sal DO     spec len1 len2 len3
2019    1   15      7.2 8.31    ooo         
2019    1   15.5    5.2 8.75    atc 175     
2019    1   15.5    5.2 8.75    cfc 135 156 
2019    1   15.5    5.2 8.75    men 181 206 174

Для приведенных выше примеров попыток добраться до места, где вторая длина для cfc перемещается в len1 в новой строке в кадре данных

year    mo  temp    sal DO     spec len1
2019    1   15.5    5.2 8.75    cfc 156

1 Ответ

0 голосов
/ 22 октября 2019

Вы можете использовать gather от Tidyr. Это преобразует имя столбца в значение в новом столбце.
Например, если предположить, что ваши данные находятся в кадре данных с именем df

library(tidyverse)
df%>%
    gather( key = "sampleID",  # name for new column that will contain "NA, len1, len1,l1n2, etc)
            value = "length",  # name for new column that will contain length values
            len1:len3          # columns to include in the process
           )

В этот момент вы можете удалить столбец "sampleID", если хотитенапример, с

df %>% select(-sampleID)
# or other equivalent approaches
select(df,-sampleID)  # same command using tidyr without the pipe
df$sampleID <- NULL   # base R approach
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...