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

Объединение содержимого столбцов с использованием применения или другого векторизованного подхода

У меня есть data.frame, который почти полностью пуст, но каждая строка имеет одно значение. Как я могу использовать векторизованный или другой r-народный подход для объединения содержимого каждой строки в один вектор?

образец данных:

raw_data  <- structure(
    list(
        col1 = c("", "", "", "", ""),
        col2 = c("", "", "", "", ""),
        col3 = c("", "", "", "", ""),
        col4 = c("", "", "", "Millburn - Union", ""),
        col5 = c("", "", "Cranston (aka Garden City Center)", "",""),
        col6 = c("", "", "", "", ""),
        col7 = c("", "", "", "", ""),
        col8 = c("", "", "", "", "Colorado Blvd"), 
        col9 = c("", "", "", "", ""),
        col10 = c("", "", "", "", ""),
        col11 = c("Palo Alto",  "Castro (aka Market St)", "", "", "")
    ),
    .Names = c("col1", "col2", "col3", "col4", "col5", "col6", "col7", "col8", "col9", "col10", "col11"),
    row.names = c(5L, 4L, 3L, 2L, 1L),
    class = "data.frame"
)

Это то, что я пробовал, но это не удалось, так как он возвращает двумерную матрицу вместо желаемого вектора:

raw_data$test <-  apply(raw_data, MAR=1, FUN=paste0)
27.03.2015

Ответы:


1

Ваша интуиция насчет apply верна. Вам просто нужно передать аргумент collapse в paste:

 apply( raw_data, 1, paste0, collapse = "" )
                                  5                                   4                                   3 
                        "Palo Alto"            "Castro (aka Market St)" "Cranston (aka Garden City Center)" 
                                  2                                   1 
                 "Millburn - Union"                     "Colorado Blvd" 
27.03.2015

2

Вы можете сделать это очень просто с помощью одной индексной операции:

raw_data[raw_data!='']

Демо:

R> raw_data[raw_data!=''];
[1] "Millburn - Union"                  "Cranston (aka Garden City Center)" "Colorado Blvd"                     "Palo Alto"                         "Castro (aka Market St)"

Если вы заботитесь о том, чтобы порядок векторов был сверху вниз (в отличие от слева направо, а затем сверху вниз, что и делает вышеупомянутая операция), вы можете транспонировать input data.frame:

R> t(raw_data)[t(raw_data)!=''];
[1] "Palo Alto"                         "Castro (aka Market St)"            "Cranston (aka Garden City Center)" "Millburn - Union"                  "Colorado Blvd"
27.03.2015

3

В этом примере в каждой строке есть только один элемент, отличный от ''. Вот еще один способ использовать paste с do.call

do.call(paste, c(raw_data, sep=''))
#[1] "Palo Alto"                         "Castro (aka Market St)"           
#[3] "Cranston (aka Garden City Center)" "Millburn - Union"                 
#[5] "Colorado Blvd"    

Предположим, что если в строке 'raw_data' несколько элементов, отличных от '', в этом случае может быть лучше использовать sep=';' or, `.

raw_data[1,1] <- 'Millburn'
raw_data[1,3] <- 'Something'
gsub('^;+|;+$|(;);+', '\\1', do.call(paste, c(raw_data, sep=';')))
#[1] "Millburn;Something;Palo Alto"      "Castro (aka Market St)"     
#[3] "Cranston (aka Garden City Center)" "Millburn - Union"           
#[5] "Colorado Blvd"                    

apply получает тот же результат, что и выше

unname(apply(raw_data, 1, FUN=function(x) paste(x[x!=''],collapse=';')))
#[1] "Millburn;Something;Palo Alto"      "Castro (aka Market St)"    
#[3] "Cranston (aka Garden City Center)" "Millburn - Union"         
#[5] "Colorado Blvd"                    
28.03.2015
Новые материалы

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

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

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

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

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

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

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