Связывание строк информационного кадра с символами и целыми числами - PullRequest
0 голосов
/ 31 октября 2018

У меня есть два набора данных, 2 obs из 7 переменных.

Я пытаюсь сгенерировать набор данных (dataframe), который является комбинацией двух наборов, которые у меня сейчас есть.

Например, цель состоит в том, чтобы иметь единый набор данных, который был бы 4 obs 7 переменных. Просто добавив строки второго набора данных к другим внизу. По сути, просто пытаюсь создать таблицу большего размера с большим количеством строк из тех, что у меня есть.

Я попробовал установить dplyr:

rbind(df1,df2)

rbind(df1,df2, .is=NULL)

У меня была ошибка о:

Error in match.names(clabs, names(xi)) : 
  names do not match previous name

Я полагаю, это связано с генерацией моих данных из файла CSV, который содержал заголовки для моего первого набора данных в качестве заголовков столбцов, а второй набор данных имел разные заголовки, так как он был прочитан далее в файле, поэтому заголовки были х1, х1.1 и т.д ...

поэтому я попытался без имени (), что также не удалось.

тогда я попробовал

bind_rows(df1,df2)

но вместо этого он дал мне набор данных 4x14. Я также получал ошибки в других местах в соответствии с

Ошибка: не совместима с STRSXP

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

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Я не уверен, правильно ли я понимаю, но вы можете бороться с разными именами и типами данных.

Что вы можете сделать:

1) colnames(df1) и colnames(df2): у вас одинаковые имена?

2) Затем попробуйте str(df1) и str(df2) и посмотрите, есть ли различия.

3) Если ваши кадры данных хранятся в виде списка, преобразуйте их обратно, сделайте кадры данных.

ad 1) В случае, если проблема заключается в использовании colnames:

colnames(df2) <- colnames(df1)
rbind(df1,df2)

ad 2) Если он все еще не работает и типы данных различаются, сопоставьте их друг с другом и попробуйте снова связать строки.

ad 3) Если ваши кадры данных являются списками и, следовательно, они не работают, попробуйте:

library(dplyr)
bind_rows(bind_rows(df1), bind_rows(df2))
0 голосов
/ 31 октября 2018

Если я понимаю проблему, у вас есть разные типы данных в ваших фреймах данных. Решение может тогда быть:

library(dplyr)
library(hablar)

# Example data sets
df1 <- data.frame(a = c(1L, 2L))
df2 <- data.frame(a = c("1", "2"), stringsAsFactors = F)

# Solution
df1 <- df1 %>% retype()
df2 <- df2 %>% retype()

bind_rows(df1, df2)

Что дает объединенный фрейм данных:

# A tibble: 4 x 1
      a
  <int>
1     1
2     2
3     1
4     2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...