Nano Hash - криптовалюты, майнинг, программирование

Как преобразовать строки заголовков в новые столбцы

У меня есть данные (несовершенно импортированные из PDF), в которых все находится в одном столбце с определенными строками в качестве описательных заголовков. Например:

dfx <- data.frame(V1 = c("Box 1", "abcd10", "bcde15", "Box 2", "cdefg35", "jklm40", "nopq50", "rstu52"))

       V1
1   Box 1
2  abcd10
3  bcde15
4   Box 2
5 cdefg35
6  jklm40
7  nopq50
8  rstu52

Я хочу создать отдельный столбец, в котором каждое наблюдение принимает значение ближайшего заголовка над ним. Как это:

       V1    v2
1  abcd10 Box 1
2  bcde15 Box 1
3 cdefg35 Box 2
4  jklm40 Box 2
5  nopq50 Box 2
6  rstu52 Box 2

Ничто из того, что я пробовал, не приблизило меня. Любая помощь будет оценена по достоинству. Спасибо!

18.11.2019

Ответы:


1

Вы также можете сделать:

 indx <- grepl("^Box \\d+$",dfx$V1)
 transform(dfx,v2=V1[indx][cumsum(indx)])[!indx,]
       V1    v2
2  abcd10 Box 1
3  bcde15 Box 1
5 cdefg35 Box 2
6  jklm40 Box 2
7  nopq50 Box 2
8  rstu52 Box 2
18.11.2019

2

Идея через базу R может быть,

i1 <- grepl('Box', dfx$V1)
dfx$new <- with(dfx, ave(V1, cumsum(i1), FUN = function(i) i[1]))
subset(dfx, !i1)

#       V1   new
#2  abcd10 Box 1
#3  bcde15 Box 1
#5 cdefg35 Box 2
#6  jklm40 Box 2
#7  nopq50 Box 2
#8  rstu52 Box 2
18.11.2019

3

Создайте столбец V2, равный V1 для строк блока и NA для других строк, а затем используйте na.locf0 для заполнения NA. Наконец, удалите V1 строк Box.

library(zoo)

isBox <- grepl("Box", dfx$V1)
transform(dfx, V2 = na.locf0(replace(V1, !isBox, NA)))[ !isBox, ]

давая:

       V1    V2
2  abcd10 Box 1
3  bcde15 Box 1
5 cdefg35 Box 2
6  jklm40 Box 2
7  nopq50 Box 2
8  rstu52 Box 2
18.11.2019
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..