#r #row #columnsorting
Вопрос:
Я преобразую грязный лист Excel в полезные данные. Базовая структура представляет собой повторяющийся блок переменных с аналогичными элементами в строках. Я хочу переместить столбцы так, чтобы они стали строками первого блока столбцов.
Трудно описать, так что вот mwe.
d1 = structure(list(...1 = c("p", "w", "s", NA, "A Ex", NA, "Pres",
"Time", "HR"), ...2 = c("1", "1", "1", NA, "Walk", NA, NA, NA,
NA), ...3 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"),
...4 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA), ...5 = c("p",
"w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...6 = c("1",
"1", "2", NA, "Walk", NA, NA, NA, NA), ...7 = c(NA, NA, NA,
NA, NA, NA, "Done", "Time", "HR"), ...8 = c(NA, NA, NA, NA,
NA, NA, NA, NA, NA), ...9 = c("p", "w", "s", NA, "A Ex",
NA, "Pres", "Time", "HR"), ...10 = c("1", "1", "3", NA, "Walk",
NA, NA, NA, NA), ...11 = c(NA, NA, NA, NA, NA, NA, "Done",
"Time", "HR"), ...12 = c(NA, NA, NA, NA, NA, NA, NA, NA,
NA)), row.names = c(NA, -9L), class = c("tbl_df", "tbl",
"data.frame"))
Я хочу переместить столбцы 5:8 и 6:12, чтобы они стали дополнительными строками 1:4, чтобы результат был:
df2 = structure(list(...1 = c("p", "w", "s", NA, "A Ex", NA, "Pres",
"Time", "HR", "p", "w", "s", NA, "A Ex", NA, "Pres", "Time",
"HR", "p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...2 = c("1",
"1", "1", NA, "Walk", NA, NA, NA, NA, "1", "1", "2", NA, "Walk",
NA, NA, NA, NA, "1", "1", "3", NA, "Walk", NA, NA, NA, NA), ...3 = c(NA,
NA, NA, NA, NA, NA, "Done", "Time", "HR", NA, NA, NA, NA, NA,
NA, "Done", "Time", "HR", NA, NA, NA, NA, NA, NA, "Done", "Time",
"HR"), ...4 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)), row.names = c(NA,
-27L), class = c("tbl_df", "tbl", "data.frame"))
Ответ №1:
основание R
Основная предпосылка состоит в том, чтобы разбиться на группы по 4 столбца:
splitframes <- split.default(d1, (seq_along(d1)-1) %/% 4) splitframes # #r #row #columnsorting
Вопрос:
Я преобразую грязный лист Excel в полезные данные. Базовая структура представляет собой повторяющийся блок переменных с аналогичными элементами в строках. Я хочу переместить столбцы так, чтобы они стали строками первого блока столбцов. Трудно описать, так что вот mwe.d1 = structure(list(...1 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...2 = c("1", "1", "1", NA, "Walk", NA, NA, NA, NA), ...3 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...4 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA), ...5 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...6 = c("1", "1", "2", NA, "Walk", NA, NA, NA, NA), ...7 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...8 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA), ...9 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...10 = c("1", "1", "3", NA, "Walk", NA, NA, NA, NA), ...11 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...12 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA)), row.names = c(NA, -9L), class = c("tbl_df", "tbl", "data.frame"))
Я хочу переместить столбцы 5:8 и 6:12, чтобы они стали дополнительными строками 1:4, чтобы результат был:
df2 = structure(list(...1 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR", "p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR", "p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...2 = c("1", "1", "1", NA, "Walk", NA, NA, NA, NA, "1", "1", "2", NA, "Walk", NA, NA, NA, NA, "1", "1", "3", NA, "Walk", NA, NA, NA, NA), ...3 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR", NA, NA, NA, NA, NA, NA, "Done", "Time", "HR", NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...4 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)), row.names = c(NA, -27L), class = c("tbl_df", "tbl", "data.frame"))
Ответ №1:
основание R
Основная предпосылка состоит в том, чтобы разбиться на группы по 4 столбца:
0`
# # A tibble: 9 x 4
# ...1 ...2 ...3 ...4
# <chr> <chr> <chr> <lgl>
# 1 p 1 <NA> NA
# 2 w 1 <NA> NA
# 3 s 1 <NA> NA
# 4 <NA> <NA> <NA> NA
# 5 A Ex Walk <NA> NA
# 6 <NA> <NA> <NA> NA
# 7 Pres <NA> Done NA
# 8 Time <NA> Time NA
# 9 HR <NA> HR NA
##r #row #columnsorting
Вопрос:
Я преобразую грязный лист Excel в полезные данные. Базовая структура представляет собой повторяющийся блок переменных с аналогичными элементами в строках. Я хочу переместить столбцы так, чтобы они стали строками первого блока столбцов.
Трудно описать, так что вот mwe.
d1 = structure(list(...1 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...2 = c("1", "1", "1", NA, "Walk", NA, NA, NA, NA), ...3 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...4 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA), ...5 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...6 = c("1", "1", "2", NA, "Walk", NA, NA, NA, NA), ...7 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...8 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA), ...9 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...10 = c("1", "1", "3", NA, "Walk", NA, NA, NA, NA), ...11 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...12 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA)), row.names = c(NA, -9L), class = c("tbl_df", "tbl", "data.frame"))
Я хочу переместить столбцы 5:8 и 6:12, чтобы они стали дополнительными строками 1:4, чтобы результат был:
df2 = structure(list(...1 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR", "p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR", "p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...2 = c("1", "1", "1", NA, "Walk", NA, NA, NA, NA, "1", "1", "2", NA, "Walk", NA, NA, NA, NA, "1", "1", "3", NA, "Walk", NA, NA, NA, NA), ...3 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR", NA, NA, NA, NA, NA, NA, "Done", "Time", "HR", NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...4 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)), row.names = c(NA, -27L), class = c("tbl_df", "tbl", "data.frame"))
Ответ №1:
основание R
Основная предпосылка состоит в том, чтобы разбиться на группы по 4 столбца:
1`
# # A tibble: 9 x 4
# ...1 ...2 ...3 ...4
# <chr> <chr> <chr> <lgl>
# 1 p 1 <NA> NA
# 2 w 1 <NA> NA
К сожалению,
rbind.data.frame
необходимо, чтобы все аргументы имели одинаковые имена,lapply(splitframes, names) # #r #row #columnsorting
Вопрос:
Я преобразую грязный лист Excel в полезные данные. Базовая структура представляет собой повторяющийся блок переменных с аналогичными элементами в строках. Я хочу переместить столбцы так, чтобы они стали строками первого блока столбцов. Трудно описать, так что вот mwe.d1 = structure(list(...1 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...2 = c("1", "1", "1", NA, "Walk", NA, NA, NA, NA), ...3 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...4 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA), ...5 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...6 = c("1", "1", "2", NA, "Walk", NA, NA, NA, NA), ...7 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...8 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA), ...9 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...10 = c("1", "1", "3", NA, "Walk", NA, NA, NA, NA), ...11 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...12 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA)), row.names = c(NA, -9L), class = c("tbl_df", "tbl", "data.frame"))
Я хочу переместить столбцы 5:8 и 6:12, чтобы они стали дополнительными строками 1:4, чтобы результат был:
df2 = structure(list(...1 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR", "p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR", "p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...2 = c("1", "1", "1", NA, "Walk", NA, NA, NA, NA, "1", "1", "2", NA, "Walk", NA, NA, NA, NA, "1", "1", "3", NA, "Walk", NA, NA, NA, NA), ...3 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR", NA, NA, NA, NA, NA, NA, "Done", "Time", "HR", NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...4 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)), row.names = c(NA, -27L), class = c("tbl_df", "tbl", "data.frame"))
Ответ №1:
основание R
Основная предпосылка состоит в том, чтобы разбиться на группы по 4 столбца:
splitframes <- split.default(d1, (seq_along(d1)-1) %/% 4) splitframes # #r #row #columnsorting
Вопрос:
Я преобразую грязный лист Excel в полезные данные. Базовая структура представляет собой повторяющийся блок переменных с аналогичными элементами в строках. Я хочу переместить столбцы так, чтобы они стали строками первого блока столбцов. Трудно описать, так что вот mwe.d1 = structure(list(...1 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...2 = c("1", "1", "1", NA, "Walk", NA, NA, NA, NA), ...3 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...4 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA), ...5 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...6 = c("1", "1", "2", NA, "Walk", NA, NA, NA, NA), ...7 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...8 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA), ...9 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...10 = c("1", "1", "3", NA, "Walk", NA, NA, NA, NA), ...11 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...12 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA)), row.names = c(NA, -9L), class = c("tbl_df", "tbl", "data.frame"))
Я хочу переместить столбцы 5:8 и 6:12, чтобы они стали дополнительными строками 1:4, чтобы результат был:
df2 = structure(list(...1 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR", "p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR", "p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...2 = c("1", "1", "1", NA, "Walk", NA, NA, NA, NA, "1", "1", "2", NA, "Walk", NA, NA, NA, NA, "1", "1", "3", NA, "Walk", NA, NA, NA, NA), ...3 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR", NA, NA, NA, NA, NA, NA, "Done", "Time", "HR", NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...4 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)), row.names = c(NA, -27L), class = c("tbl_df", "tbl", "data.frame"))
Ответ №1:
основание R
Основная предпосылка состоит в том, чтобы разбиться на группы по 4 столбца:
0`
# # A tibble: 9 x 4
# ...1 ...2 ...3 ...4
# <chr> <chr> <chr> <lgl>
# 1 p 1 <NA> NA
# 2 w 1 <NA> NA
# 3 s 1 <NA> NA
# 4 <NA> <NA> <NA> NA
# 5 A Ex Walk <NA> NA
# 6 <NA> <NA> <NA> NA
# 7 Pres <NA> Done NA
# 8 Time <NA> Time NA
# 9 HR <NA> HR NA
##r #row #columnsorting
Вопрос:
Я преобразую грязный лист Excel в полезные данные. Базовая структура представляет собой повторяющийся блок переменных с аналогичными элементами в строках. Я хочу переместить столбцы так, чтобы они стали строками первого блока столбцов.
Трудно описать, так что вот mwe.
d1 = structure(list(...1 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...2 = c("1", "1", "1", NA, "Walk", NA, NA, NA, NA), ...3 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...4 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA), ...5 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...6 = c("1", "1", "2", NA, "Walk", NA, NA, NA, NA), ...7 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...8 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA), ...9 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...10 = c("1", "1", "3", NA, "Walk", NA, NA, NA, NA), ...11 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...12 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA)), row.names = c(NA, -9L), class = c("tbl_df", "tbl", "data.frame"))
Я хочу переместить столбцы 5:8 и 6:12, чтобы они стали дополнительными строками 1:4, чтобы результат был:
df2 = structure(list(...1 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR", "p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR", "p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...2 = c("1", "1", "1", NA, "Walk", NA, NA, NA, NA, "1", "1", "2", NA, "Walk", NA, NA, NA, NA, "1", "1", "3", NA, "Walk", NA, NA, NA, NA), ...3 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR", NA, NA, NA, NA, NA, NA, "Done", "Time", "HR", NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...4 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)), row.names = c(NA, -27L), class = c("tbl_df", "tbl", "data.frame"))
Ответ №1:
основание R
Основная предпосылка состоит в том, чтобы разбиться на группы по 4 столбца:
1`
# # A tibble: 9 x 4
# ...1 ...2 ...3 ...4
# <chr> <chr> <chr> <lgl>
# 1 p 1 <NA> NA
# 2 w 1 <NA> NA
К сожалению,
rbind.data.frame
необходимо, чтобы все аргументы имели одинаковые имена,0`
# [1] "...1" "...2" "...3" "...4"
##r #row #columnsorting
Вопрос:
Я преобразую грязный лист Excel в полезные данные. Базовая структура представляет собой повторяющийся блок переменных с аналогичными элементами в строках. Я хочу переместить столбцы так, чтобы они стали строками первого блока столбцов.
Трудно описать, так что вот mwe.
d1 = structure(list(...1 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...2 = c("1", "1", "1", NA, "Walk", NA, NA, NA, NA), ...3 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...4 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA), ...5 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...6 = c("1", "1", "2", NA, "Walk", NA, NA, NA, NA), ...7 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...8 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA), ...9 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...10 = c("1", "1", "3", NA, "Walk", NA, NA, NA, NA), ...11 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...12 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA)), row.names = c(NA, -9L), class = c("tbl_df", "tbl", "data.frame"))
Я хочу переместить столбцы 5:8 и 6:12, чтобы они стали дополнительными строками 1:4, чтобы результат был:
df2 = structure(list(...1 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR", "p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR", "p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...2 = c("1", "1", "1", NA, "Walk", NA, NA, NA, NA, "1", "1", "2", NA, "Walk", NA, NA, NA, NA, "1", "1", "3", NA, "Walk", NA, NA, NA, NA), ...3 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR", NA, NA, NA, NA, NA, NA, "Done", "Time", "HR", NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...4 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)), row.names = c(NA, -27L), class = c("tbl_df", "tbl", "data.frame"))
Ответ №1:
основание R
Основная предпосылка состоит в том, чтобы разбиться на группы по 4 столбца:
splitframes <- split.default(d1, (seq_along(d1)-1) %/% 4) splitframes # #r #row #columnsorting
Вопрос:
Я преобразую грязный лист Excel в полезные данные. Базовая структура представляет собой повторяющийся блок переменных с аналогичными элементами в строках. Я хочу переместить столбцы так, чтобы они стали строками первого блока столбцов. Трудно описать, так что вот mwe.d1 = structure(list(...1 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...2 = c("1", "1", "1", NA, "Walk", NA, NA, NA, NA), ...3 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...4 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA), ...5 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...6 = c("1", "1", "2", NA, "Walk", NA, NA, NA, NA), ...7 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...8 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA), ...9 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...10 = c("1", "1", "3", NA, "Walk", NA, NA, NA, NA), ...11 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...12 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA)), row.names = c(NA, -9L), class = c("tbl_df", "tbl", "data.frame"))
Я хочу переместить столбцы 5:8 и 6:12, чтобы они стали дополнительными строками 1:4, чтобы результат был:
df2 = structure(list(...1 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR", "p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR", "p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...2 = c("1", "1", "1", NA, "Walk", NA, NA, NA, NA, "1", "1", "2", NA, "Walk", NA, NA, NA, NA, "1", "1", "3", NA, "Walk", NA, NA, NA, NA), ...3 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR", NA, NA, NA, NA, NA, NA, "Done", "Time", "HR", NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...4 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)), row.names = c(NA, -27L), class = c("tbl_df", "tbl", "data.frame"))
Ответ №1:
основание R
Основная предпосылка состоит в том, чтобы разбиться на группы по 4 столбца:
0`
# # A tibble: 9 x 4
# ...1 ...2 ...3 ...4
# <chr> <chr> <chr> <lgl>
# 1 p 1 <NA> NA
# 2 w 1 <NA> NA
# 3 s 1 <NA> NA
# 4 <NA> <NA> <NA> NA
# 5 A Ex Walk <NA> NA
# 6 <NA> <NA> <NA> NA
# 7 Pres <NA> Done NA
# 8 Time <NA> Time NA
# 9 HR <NA> HR NA
##r #row #columnsorting
Вопрос:
Я преобразую грязный лист Excel в полезные данные. Базовая структура представляет собой повторяющийся блок переменных с аналогичными элементами в строках. Я хочу переместить столбцы так, чтобы они стали строками первого блока столбцов.
Трудно описать, так что вот mwe.
d1 = structure(list(...1 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...2 = c("1", "1", "1", NA, "Walk", NA, NA, NA, NA), ...3 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...4 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA), ...5 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...6 = c("1", "1", "2", NA, "Walk", NA, NA, NA, NA), ...7 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...8 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA), ...9 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...10 = c("1", "1", "3", NA, "Walk", NA, NA, NA, NA), ...11 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...12 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA)), row.names = c(NA, -9L), class = c("tbl_df", "tbl", "data.frame"))
Я хочу переместить столбцы 5:8 и 6:12, чтобы они стали дополнительными строками 1:4, чтобы результат был:
df2 = structure(list(...1 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR", "p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR", "p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...2 = c("1", "1", "1", NA, "Walk", NA, NA, NA, NA, "1", "1", "2", NA, "Walk", NA, NA, NA, NA, "1", "1", "3", NA, "Walk", NA, NA, NA, NA), ...3 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR", NA, NA, NA, NA, NA, NA, "Done", "Time", "HR", NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...4 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)), row.names = c(NA, -27L), class = c("tbl_df", "tbl", "data.frame"))
Ответ №1:
основание R
Основная предпосылка состоит в том, чтобы разбиться на группы по 4 столбца:
1`
# # A tibble: 9 x 4
# ...1 ...2 ...3 ...4
# <chr> <chr> <chr> <lgl>
# 1 p 1 <NA> NA
# 2 w 1 <NA> NA
К сожалению,
rbind.data.frame
необходимо, чтобы все аргументы имели одинаковые имена,1`
# [1] "...5" "...6" "...7" "...8"
##r #row #columnsorting
Вопрос:
Я преобразую грязный лист Excel в полезные данные. Базовая структура представляет собой повторяющийся блок переменных с аналогичными элементами в строках. Я хочу переместить столбцы так, чтобы они стали строками первого блока столбцов.
Трудно описать, так что вот mwe.
d1 = structure(list(...1 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...2 = c("1", "1", "1", NA, "Walk", NA, NA, NA, NA), ...3 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...4 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA), ...5 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...6 = c("1", "1", "2", NA, "Walk", NA, NA, NA, NA), ...7 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...8 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA), ...9 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...10 = c("1", "1", "3", NA, "Walk", NA, NA, NA, NA), ...11 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...12 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA)), row.names = c(NA, -9L), class = c("tbl_df", "tbl", "data.frame"))
Я хочу переместить столбцы 5:8 и 6:12, чтобы они стали дополнительными строками 1:4, чтобы результат был:
df2 = structure(list(...1 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR", "p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR", "p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...2 = c("1", "1", "1", NA, "Walk", NA, NA, NA, NA, "1", "1", "2", NA, "Walk", NA, NA, NA, NA, "1", "1", "3", NA, "Walk", NA, NA, NA, NA), ...3 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR", NA, NA, NA, NA, NA, NA, "Done", "Time", "HR", NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...4 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)), row.names = c(NA, -27L), class = c("tbl_df", "tbl", "data.frame"))
Ответ №1:
основание R
Основная предпосылка состоит в том, чтобы разбиться на группы по 4 столбца:
splitframes <- split.default(d1, (seq_along(d1)-1) %/% 4) splitframes # #r #row #columnsorting
Вопрос:
Я преобразую грязный лист Excel в полезные данные. Базовая структура представляет собой повторяющийся блок переменных с аналогичными элементами в строках. Я хочу переместить столбцы так, чтобы они стали строками первого блока столбцов. Трудно описать, так что вот mwe.d1 = structure(list(...1 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...2 = c("1", "1", "1", NA, "Walk", NA, NA, NA, NA), ...3 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...4 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA), ...5 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...6 = c("1", "1", "2", NA, "Walk", NA, NA, NA, NA), ...7 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...8 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA), ...9 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...10 = c("1", "1", "3", NA, "Walk", NA, NA, NA, NA), ...11 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...12 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA)), row.names = c(NA, -9L), class = c("tbl_df", "tbl", "data.frame"))
Я хочу переместить столбцы 5:8 и 6:12, чтобы они стали дополнительными строками 1:4, чтобы результат был:
df2 = structure(list(...1 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR", "p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR", "p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...2 = c("1", "1", "1", NA, "Walk", NA, NA, NA, NA, "1", "1", "2", NA, "Walk", NA, NA, NA, NA, "1", "1", "3", NA, "Walk", NA, NA, NA, NA), ...3 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR", NA, NA, NA, NA, NA, NA, "Done", "Time", "HR", NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...4 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)), row.names = c(NA, -27L), class = c("tbl_df", "tbl", "data.frame"))
Ответ №1:
основание R
Основная предпосылка состоит в том, чтобы разбиться на группы по 4 столбца:
0`
# # A tibble: 9 x 4
# ...1 ...2 ...3 ...4
# <chr> <chr> <chr> <lgl>
# 1 p 1 <NA> NA
# 2 w 1 <NA> NA
# 3 s 1 <NA> NA
# 4 <NA> <NA> <NA> NA
# 5 A Ex Walk <NA> NA
# 6 <NA> <NA> <NA> NA
# 7 Pres <NA> Done NA
# 8 Time <NA> Time NA
# 9 HR <NA> HR NA
##r #row #columnsorting
Вопрос:
Я преобразую грязный лист Excel в полезные данные. Базовая структура представляет собой повторяющийся блок переменных с аналогичными элементами в строках. Я хочу переместить столбцы так, чтобы они стали строками первого блока столбцов.
Трудно описать, так что вот mwe.
d1 = structure(list(...1 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...2 = c("1", "1", "1", NA, "Walk", NA, NA, NA, NA), ...3 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...4 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA), ...5 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...6 = c("1", "1", "2", NA, "Walk", NA, NA, NA, NA), ...7 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...8 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA), ...9 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...10 = c("1", "1", "3", NA, "Walk", NA, NA, NA, NA), ...11 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...12 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA)), row.names = c(NA, -9L), class = c("tbl_df", "tbl", "data.frame"))
Я хочу переместить столбцы 5:8 и 6:12, чтобы они стали дополнительными строками 1:4, чтобы результат был:
df2 = structure(list(...1 = c("p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR", "p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR", "p", "w", "s", NA, "A Ex", NA, "Pres", "Time", "HR"), ...2 = c("1", "1", "1", NA, "Walk", NA, NA, NA, NA, "1", "1", "2", NA, "Walk", NA, NA, NA, NA, "1", "1", "3", NA, "Walk", NA, NA, NA, NA), ...3 = c(NA, NA, NA, NA, NA, NA, "Done", "Time", "HR", NA, NA, NA, NA, NA, NA, "Done", "Time", "HR", NA, NA, NA, NA, NA, NA, "Done", "Time", "HR"), ...4 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)), row.names = c(NA, -27L), class = c("tbl_df", "tbl", "data.frame"))
Ответ №1:
основание R
Основная предпосылка состоит в том, чтобы разбиться на группы по 4 столбца:
1`
# # A tibble: 9 x 4
# ...1 ...2 ...3 ...4
# <chr> <chr> <chr> <lgl>
# 1 p 1 <NA> NA
# 2 w 1 <NA> NA
К сожалению,
rbind.data.frame
необходимо, чтобы все аргументы имели одинаковые имена,2`
# [1] "...9" "...10" "...11" "...12"
так что сначала нам нужно это исправить:
splitframes <- lapply(splitframes, `colnames<-`, names(splitframes[[1]])) do.call(rbind, splitframes) # # A tibble: 27 x 4 # ...1 ...2 ...3 ...4 # * <chr> <chr> <chr> <lgl> # 1 p 1 <NA> NA # 2 w 1 <NA> NA # 3 s 1 <NA> NA # 4 <NA> <NA> <NA> NA # 5 A Ex Walk <NA> NA # 6 <NA> <NA> <NA> NA # 7 Pres <NA> Done NA # 8 Time <NA> Time NA # 9 HR <NA> HR NA # 10 p 1 <NA> NA # # ... with 17 more rows
dplyr
Этот пакет немного более удобен:
splitframes <- split.default(d1, (seq_along(d1)-1) %/% 4) dplyr::bind_rows(splitframes) # New names: # * ...5 -> ...1 # * ...6 -> ...2 # * ...7 -> ...3 # * ...8 -> ...4 # New names: # * ...9 -> ...1 # * ...10 -> ...2 # * ...11 -> ...3 # * ...12 -> ...4 # # A tibble: 27 x 4 # ...1 ...2 ...3 ...4 # <chr> <chr> <chr> <lgl> # 1 p 1 <NA> NA # 2 w 1 <NA> NA # 3 s 1 <NA> NA # 4 <NA> <NA> <NA> NA # 5 A Ex Walk <NA> NA # 6 <NA> <NA> <NA> NA # 7 Pres <NA> Done NA # 8 Time <NA> Time NA # 9 HR <NA> HR NA # 10 p 1 <NA> NA # # ... with 17 more rows
данные.таблица
splitframes <- split.default(d1, (seq_along(d1)-1) %/% 4) library(data.table) rbindlist(splitframes) # Column 1 ['...5'] of item 2 is missing in item 1. Use fill=TRUE to fill with NA (NULL for list columns), or use.names=FALSE to ignore column names. use.names='check' (default from v1.12.2) emits this message and proceeds as if use.names=FALSE for backwards compatibility. See news item 5 in v1.12.2 for options to control this message. # ...1 ...2 ...3 ...4 # <char> <char> <char> <lgcl> # 1: p 1 <NA> NA # 2: w 1 <NA> NA # 3: s 1 <NA> NA # 4: <NA> <NA> <NA> NA
Чтобы заставить замолчать это сообщение, используйте вместо
rbindlist(..., use.names=FALSE)
этого .