У меня есть df, содержащий длинные строки. Если я хочу разделить его на другую переменную, как мне это сделать? образцы данных здесь: df

r
-1
Stataq 21 Мар 2021 в 17:32

1 ответ

Лучший ответ

Кажется, что переменные занимают фиксированное пространство, поэтому, чтобы найти эти пространства, мы делаем следующее:

Разделите одну строку вручную:

vars = c(" [1]          ", "Timepoint                                       ", "EGTMPT      ",
         "Categorical select one (nominal) ", "51         ", "Screening")

Подсчитайте количество символов в каждой переменной:

sizes = numeric(length(vars))

for(i in 1:length(vars)){
  sizes[i] = nchar(vars[i])}

Кумулятивно просуммируйте значения и добавьте 1 (начальная точка) в начале:

sizes = c(1, cumsum(sizes))

Результат:

> sizes
[1]   1  14  62  74 107 118 127

Итак, первая переменная идет с 1-й по 14-ю позицию и т. Д. Теперь нам просто нужно вырезать каждую строку в этих местах:

df2 = character()
for(i in 2:length(sizes)){
  df2 = cbind(df2, apply(df, 1, function(x){substr(x, sizes[i-1], sizes[i])}))}

И, наконец, удалите лишние пробелы:

df2 = gsub(" ", "", df2)
1
Ricardo Semião e Castro 21 Мар 2021 в 14:49