Как объединить различные листы excel в R без какого-либо общего столбца?

data = ['elm13', 'elm9', 'elm0', 'elm1', 'Elm11', 'Elm2', 'elm10']

Давайте проанализируем данные. Емкость цифр всех элементов равна 2. И есть 3 буквы в общей литеральной части 'elm'.

Таким образом, максимальная длина элемента равна 5. Мы можем увеличить это значение, чтобы убедиться (например, до 8).

Учитывая это, у нас есть однолинейное решение:

data.sort(key=lambda x: '{0:0>8}'.format(x).lower())

без регулярных выражений и внешних библиотек!

print(data)

>>> ['elm0', 'elm1', 'Elm2', 'elm9', 'elm10', 'Elm11', 'elm13']

Объяснение:

for elm in data:
    print('{0:0>8}'.format(elm).lower())

>>>
0000elm0
0000elm1
0000elm2
0000elm9
000elm10
000elm11
000elm13
-5
задан Rupak Kashyap 13 July 2018 в 13:20
поделиться

1 ответ

Проблема в том, что ваши data.frames имеют различное количество строк. Вам нужно отрегулировать их длины и привязать их по столбцам.

library(readxl)
library(XLConnect)
# Create reproducible data
library(XLConnect)
df1 <- data.frame(a = 1:26, b = letters[1:26])
df2 <- data.frame(a = 1:16, b = letters[1:16])
df3 <- data.frame(a = 1:6, b = letters[1:6])

# Save to xlsx-file
wb <- loadWorkbook("Retail Data.xlsx", create = TRUE)
createSheet(wb, "sh1")
createSheet(wb, "sh2")
createSheet(wb, "sh3")
writeWorksheet(wb, df1, "sh1")
writeWorksheet(wb, df2, "sh2")
writeWorksheet(wb, df3, "sh3")
saveWorkbook(wb)

# load sheets
x1 <- data.frame(read_excel("Retail Data.xlsx", sheet=1))
x2 <- data.frame(read_excel("Retail Data.xlsx", sheet=2))
x3 <- data.frame(read_excel("Retail Data.xlsx", sheet=3))
max_rows <- max(nrow(x1), nrow(x2), nrow(x3))

# fill missing columns w/NAs
x1s <- setNames(data.frame(matrix(NA, ncol = ncol(x1), nrow = max_rows - nrow(x1))), names(x1))
x1d <- rbind(x1, x1s)
x2s <- setNames(data.frame(matrix(NA, ncol = ncol(x2), nrow = max_rows - nrow(x2))), names(x2))
x2d <- rbind(x2, x2s)
x3s <- setNames(data.frame(matrix(NA, ncol = ncol(x3), nrow = max_rows - nrow(x3))), names(x3))
x3d <- rbind(x3, x3s)

# Combine column-wise
y <- cbind(x1d, x2d, x3d)
y
0
ответ дан Artem 17 August 2018 в 12:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: