#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)