объединить / объединить данные с не полностью сопоставимыми столбцами [duplicate]

Номера JavaScript обычно вводятся как десятичные числа с плавающей запятой, но они внутренне представлены как двоичные числа с плавающей запятой. Это приводит к неточности.

blockquote>

Для получения дополнительной информации вы можете прочитать эту книгу:

http://speakingjs.com/es5/ch11.html#number_representation

1
задан Ronak Shah 18 November 2015 в 13:15
поделиться

3 ответа

Если вы хотите придерживаться базы R, вы можете сделать что-то вроде этого:

### Get all the columns names
col <- unique(unlist(sapply(df.lst, names)))
col
## [1] "a" "b" "d" "e" "f" "g"

### Fill the missing columns with NA
df.lst <- lapply(df.lst, function(df) {
  df[, setdiff(col, names(df))] <- NA
  df
})

### Then Bind it
do.call(rbind, df.lst)
##     a b d  e  f  g
## A.1 1 5 2  1  1  1
## A.2 2 4 3  1  2  2
## B.1 1 3 2 NA NA NA
## B.2 2 2 3 NA NA NA
## C.1 1 4 1  1 NA NA
## C.2 2 3 2  3 NA NA
6
ответ дан dickoa 18 August 2018 в 19:01
поделиться
  • 1
    что делает «df» сразу после НС? – user1945827 18 November 2015 в 13:46
  • 2
    Вам нужно вернуть измененный data.frame (вмененный NA) в конце вызова функции, если вы хотите lapply изменить каждый data.frame, как вы этого хотите. – dickoa 18 November 2015 в 13:51
  • 3
    Он работает для моего поддельного набора данных, но не моего реального набора данных, мне нужно задать новый вопрос с dput? – user1945827 18 November 2015 в 14:03
  • 4
    Теперь он работает для моего data.set ... – user1945827 18 November 2015 в 14:16

Мы можем использовать

library(dplyr)
bind_rows(df.lst)

Или

library(data.table)
rbindlist(df.lst, fill=TRUE)
6
ответ дан akrun 18 August 2018 в 19:01
поделиться

Попробуйте

library(plyr)
ldply(df.lst,data.frame)

  .id a b d  e  f  g
1   A 1 5 2  1  1  1
2   A 2 4 3  1  2  2
3   B 1 3 2 NA NA NA
4   B 2 2 3 NA NA NA
5   C 1 4 1  1 NA NA
6   C 2 3 2  3 NA NA

При необходимости вы можете удалить первый столбец:

df<-ldply(df.lst,data.frame)
df[,-1]

a b d  e  f  g
1 1 5 2  1  1  1
2 2 4 3  1  2  2
3 1 3 2 NA NA NA
4 2 2 3 NA NA NA
5 1 4 1  1 NA NA
6 2 3 2  3 NA NA
4
ответ дан etienne 18 August 2018 в 19:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: