Разбить один столбец на несколько на основе пробелов в r - PullRequest
0 голосов
/ 08 февраля 2020

Как я могу разделить один столбец на несколько столбцов в R, используя пробелы в качестве разделителей? Я пытался найти ответ в течение нескольких часов (даже дней), но теперь я рассчитываю на вас, ребята, чтобы помочь мне!

Вот так выглядит мой набор данных, и все это в одном столбце, я не очень позаботьтесь об именах столбцов, так как в конце мне понадобятся только некоторые из них для моего анализа:

[1]  1000.0    246                                                               
[2]   970.0    491   -3.3   -5.0     88   2.73    200      4  272.2  279.8  272.7
[3]   909.0   1002   -4.7   -6.6     87   2.58    200     12  275.9  283.2  276.3
[4]   900.0   1080   -5.5   -7.5     86   2.43    200     13  275.8  282.8  276.2
[5]   879.0   1264   -6.5   -8.8     84   2.25    200     16  276.7  283.1  277.0
[6]   850.0   1525   -6.5  -12.5     62   1.73    200     20  279.3  284.4  279.6

Кроме того, я пробовал отдельную функцию, и она выдает ошибку, сообщающую, что это невозможно за объект класса функции.

Большое спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 08 февраля 2020

Всегда легче помочь, если в вопросе есть минимальный воспроизводимый пример . Данные, которые вы показываете, не легко использовать ...

MRE:

    data_vector <- c("1000.0    246",
                     "970.0    491   -3.3   -5.0     88   2.73    200      4  272.2  279.8  272.7",
                     "909.0   1002   -4.7   -6.6     87   2.58    200     12  275.9  283.2  276.3",
                     "900.0   1080   -5.5   -7.5     86   2.43    200     13  275.8  282.8  276.2",
                     "879.0   1264   -6.5   -8.8     84   2.25    200     16  276.7  283.1  277.0",
                     "850.0   1525   -6.5  -12.5     62   1.73    200     20  279.3  284.4  279.6")

А вот решение с использованием gsub и read.csv:

    oo <- read.csv(text=gsub(" +", " ", paste0(data_vector, collapse="\n")), sep=" ", header=FALSE)

Который производит этот вывод:

        V1   V2   V3    V4 V5   V6  V7 V8    V9   V10   V11
    1 1000  246   NA    NA NA   NA  NA NA    NA    NA    NA
    2  970  491 -3.3  -5.0 88 2.73 200  4 272.2 279.8 272.7
    3  909 1002 -4.7  -6.6 87 2.58 200 12 275.9 283.2 276.3
    4  900 1080 -5.5  -7.5 86 2.43 200 13 275.8 282.8 276.2
    5  879 1264 -6.5  -8.8 84 2.25 200 16 276.7 283.1 277.0
    6  850 1525 -6.5 -12.5 62 1.73 200 20 279.3 284.4 279.6
0 голосов
/ 08 февраля 2020

read.table/read.csv будет работать, если мы передадим его как character вектор

read.table(text = data_vector, header = FALSE, fill = TRUE)
#    V1   V2   V3    V4 V5   V6  V7 V8    V9   V10   V11
#1 1000  246   NA    NA NA   NA  NA NA    NA    NA    NA
#2  970  491 -3.3  -5.0 88 2.73 200  4 272.2 279.8 272.7
#3  909 1002 -4.7  -6.6 87 2.58 200 12 275.9 283.2 276.3
#4  900 1080 -5.5  -7.5 86 2.43 200 13 275.8 282.8 276.2
#5  879 1264 -6.5  -8.8 84 2.25 200 16 276.7 283.1 277.0
#6  850 1525 -6.5 -12.5 62 1.73 200 20 279.3 284.4 279.6

данные

 data_vector <- c("1000.0    246",
                     "970.0    491   -3.3   -5.0     88   2.73    200      4  272.2  279.8  272.7",
                     "909.0   1002   -4.7   -6.6     87   2.58    200     12  275.9  283.2  276.3",
                     "900.0   1080   -5.5   -7.5     86   2.43    200     13  275.8  282.8  276.2",
                     "879.0   1264   -6.5   -8.8     84   2.25    200     16  276.7  283.1  277.0",
                     "850.0   1525   -6.5  -12.5     62   1.73    200     20  279.3  284.4  279.6")
...