Как объединить фрейм данных и строку - PullRequest
0 голосов
/ 16 февраля 2019

В случае, когда a = матрица (c (1,2,3,4), nrow = 2, ncol = 2) и b = c ('name', 3).Я пытаюсь объединить a и b так, чтобы результат был [1 3 name 3] в первом ряду и [2 4] во втором ряду.

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

Если вас устраивает список, а не фрейм данных, это сработает.

a <- matrix(c(1,2,3,4),nrow=2,ncol=2)
b <- c('name',3)
c <- list(a[,1],a[,2],b[1],b[2] )

Если вам нужен фрейм данных, вам нужно, чтобы 1-я и 2-я строки имели одинаковое количество столбцов, заполняя пробелы чем-то.

d <- as.data.frame(c)
d[2,3:4] <- NA
0 голосов
/ 16 февраля 2019

Количество строк отличается в каждом кадре данных.Поэтому cbind будет сложно объединить данные и по умолчанию зацикливает более короткий фрейм данных, в данном случае b.Я бы предложил добавить имя строки в виде столбца, а затем связать его.По умолчанию full_join генерирует значения NA для фреймов данных, в которых отсутствует это значение привязки.Этот вопрос является частично дубликатом Добавьте (не объединяйте!) Два фрейма данных с неравными строками и столбцами , чтобы вы могли найти дополнительную помощь там.

# Load packages
library(tidyverse)
library(magrittr) # To use the inplace assignment operator (%<>%) 

# Create dataframes
a <- data.frame(1:2,3:4)
b <- merge('name', 3)

# Create rowname column for each dataframe
a %<>% tibble::rownames_to_column()
b %<>% tibble::rownames_to_column()

# Use 'full join' to bind dataframes together
c <- dplyr::full_join(a, b, by=rowname) %>%
       # Remove the rowname column
       dplyr::select(-rowname)

# Print c
print(c)
  X1.2 X3.4    x  y
  1    1    3 name  3
  2    2    4 <NA> NA
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...