Как устранить ошибку: столбец 1 должен быть назван в R

#r #dataframe #dplyr #tidyverse

#r #фрейм данных #dplyr #tidyverse

Вопрос:

У меня есть приведенный ниже фрейм данных в R. При повороте фрейма данных я получаю Error: Column 1 must be named сообщение об ошибке.

Мне нужно понять, в чем заключается эта точная ошибка, и есть ли что-то, чего мне здесь не хватает. Кроме того, пожалуйста, предложите, может ли быть какой-то лучший подход для более широкого использования pivot.

Фрейм данных <-

 structure(list(Batch.x = c("", "AA", "AA", "AA", "BA", "BA", 
"BA", "BA", "BA", "BA", "BA", "BA", "BA", "BA", "BN", 
"BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", 
"NC", "NC", "NC", "NC", "NC", "NC", "NC", "NC", "NC", 
"NC", "KJ", "KJ", "KJ", "KJ", "KJ", "KJ", "KJ", "KJ", 
"KJ", "KJ", "UY", "UY", "UY", "UY", "UY", "UY", "UY", 
"UY", "UY", "UY", "IU", "IU", "IU", "IU", "IU", "IU", 
"IU", "IU", "IU", "IU", "PK", "PK", "PK", "PK", "PK", 
"PK", "PK", "PK", "PK", "PK", "LD", "LD", "LD", "LD", 
"LD", "LD", "LD", "LD", "LD", "LD", "OF", "OF", "OF", 
"OF", "OF", "OF", "OF", "OF", "OF", "OF", "PE", "PE", 
"PE", "PE", "PE", "PE", "PE", "PE", "PE", "PE", "HX", 
"HX", "HX", "HX", "HX", "HX", "HX", "HX", "HX", "HX", 
"ZT", "ZT", "ZT", "ZT", "ZT", "ZT", "ZT", "ZT", "ZT", 
"ZT", "ZZ", "ZZ", "ZZ", "ZZ", "ZZ", "ZZ", "ZZ", "ZZ", 
"ZZ", "ZZ", "XA", "XA", "XA", "XA", "XA", "XA", "XA", 
"XA", "XA", "XA", "PV", "PV", "PV", "PV", "PV", "PV", 
"PV", "PV", "PV", "PV", NA), Batch.y = c("", "AA", 
"HX", "PV", "BA", "BN", "NC", "KJ", "UY", "IU", "PK", 
"LD", "OF", "PE", "BA", "BN", "NC", "KJ", "UY", "IU", 
"PK", "LD", "OF", "PE", "BA", "BN", "NC", "KJ", "UY", 
"IU", "PK", "LD", "OF", "HX", "BA", "BN", "NC", "KJ", 
"UY", "IU", "PK", "LD", "OF", "PE", "BA", "BN", "NC", 
"KJ", "UY", "IU", "PK", "LD", "OF", "PE", "BA", "BN", 
"NC", "KJ", "UY", "IU", "PK", "OF", "PE", "HX", "BA", 
"BN", "NC", "KJ", "UY", "IU", "PK", "LD", "OF", "PE", 
"BA", "BN", "NC", "KJ", "UY", "PK", "LD", "OF", "PE", 
"HX", "BA", "BN", "NC", "KJ", "UY", "IU", "PK", "LD", 
"OF", "PE", "BA", "BN", "KJ", "UY", "IU", "PK", "LD", 
"OF", "PE", "HX", "AA", "BA", "BN", "NC", "KJ", "UY", 
"IU", "PK", "LD", "OF", "BA", "BN", "NC", "KJ", "UY", 
"IU", "PK", "LD", "OF", "PE", "BA", "BN", "NC", "KJ", 
"UY", "IU", "PK", "LD", "OF", "PE", "BA", "BN", "NC", 
"KJ", "UY", "IU", "PK", "LD", "OF", "PE", "AA", "BA", 
"BN", "NC", "KJ", "UY", "IU", "PK", "LD", "PE", NA), 
    N = c(4216L, 1L, 1L, 1L, 1484L, 49L, 44L, 49L, 137L, 114L, 
    102L, 7L, 20L, 75L, 49L, 660L, 64L, 13L, 51L, 10L, 44L, 11L, 
    31L, 16L, 44L, 64L, 496L, 4L, 30L, 5L, 22L, 1L, 4L, 62L, 
    49L, 13L, 4L, 355L, 22L, 9L, 47L, 5L, 8L, 29L, 137L, 51L, 
    30L, 22L, 727L, 20L, 63L, 7L, 20L, 24L, 114L, 10L, 5L, 9L, 
    20L, 303L, 20L, 4L, 4L, 29L, 102L, 44L, 22L, 47L, 63L, 20L, 
    612L, 5L, 13L, 25L, 7L, 11L, 1L, 5L, 7L, 5L, 69L, 2L, 3L, 
    9L, 20L, 31L, 4L, 8L, 20L, 4L, 13L, 2L, 315L, 11L, 75L, 16L, 
    29L, 24L, 4L, 25L, 3L, 11L, 337L, 18L, 1L, 85L, 98L, 62L, 
    30L, 100L, 29L, 70L, 9L, 24L, 41L, 5L, 9L, 11L, 22L, 7L, 
    38L, 2L, 3L, 6L, 112L, 23L, 15L, 7L, 30L, 28L, 21L, 2L, 24L, 
    11L, 580L, 177L, 130L, 91L, 224L, 108L, 221L, 39L, 63L, 95L, 
    1L, 104L, 122L, 96L, 74L, 104L, 27L, 97L, 10L, 48L, 217L)), row.names = c(NA, 
-155L), groups = structure(list(Batch.x = c("", "AA", "BA", 
"BN", "NC", "KJ", "UY", "IU", "PK", "LD", "OF", "PE", 
"HX", "ZT", "ZZ", "XA", "PV", NA), .rows = structure(list(
    1L, 2:4, 5:14, 15:24, 25:34, 35:44, 45:54, 55:64, 65:74, 
    75:84, 85:94, 95:104, 105:114, 115:124, 125:134, 135:144, 
    145:154, 155L), ptype = integer(0), class = c("vctrs_list_of", 
"vctrs_vctr", "list"))), row.names = c(NA, -18L), class = c("tbl_df", 
"tbl", "data.frame"), .drop = TRUE), class = c("grouped_df", 
"tbl_df", "tbl", "data.frame"))
 

Мой Код:

 Pivot_df <- Dataframe %>% 
  tidyr::pivot_wider(names_from = Batch.y, values_from = N)
 

Ответ №1:

1-е значение в Batch.y пусто, у tibbles не может быть пустых имен столбцов, поэтому вы получаете ошибку. Переименуйте пустые значения в некоторое значение, и тогда вы сможете изменить данные.

 library(dplyr)
library(tidyr)

Dataframe %>% 
  ungroup() %>% 
  mutate(Batch.y = replace(Batch.y, Batch.y == '', 'None')) %>%
  pivot_wider(names_from = Batch.y, values_from = N)