#r #tidyverse
#r #tidyverse
Вопрос:
У меня есть tibble с 82 столбцами, из которых первый представляет собой символьную строку, а остальные — числа. Вот небольшой пример, содержащий всего 3 столбца:
df <- df=tibble(agg = c("a","b","c","d","e","f","g","h","i","j"),
x1=c(1,0,0,NA,0,1,1,NA,0,1),
x2=c(1,1,NA,1,1,0,NA,NA,0,1))
Я хочу добавить дополнительную строку, где у меня есть вектор с числовыми значениями и строка
"k", c(1:2)
Если есть только 3 столбца, я могу просто использовать add_row (agg = «k», x1 = 1, x2 = 2), но с 83 столбцами это невозможно. Будем признательны за любую помощь.
Приветствую Renger’а
Комментарии:
1. Важны ли значения числовых столбцов? Если нет, вы могли бы сделать
rbind(c("k", rep(1, ncol(df) - 1)), df)
Ответ №1:
Создайте вектор и rbind
перенесите его в исходный фрейм данных.
df1 <- rbind(c("k", 1:2), df)
df1 <- type.convert(df1, as.is = TRUE)
df1
# A tibble: 11 x 3
# agg x1 x2
# <chr> <int> <int>
# 1 k 1 2
# 2 a 1 1
# 3 b 0 1
# 4 c 0 NA
# 5 d NA 1
# 6 e 0 1
# 7 f 1 0
# 8 g 1 NA
# 9 h NA NA
#10 i 0 0
#11 j 1 1
Ответ №2:
Мы можем использовать list
и list
можем иметь элементы с несколькими типами, rbind
(или bind_rows
из dplyr
) list
rbind(df, list("k", 1, 2))
# A tibble: 11 x 3
# agg x1 x2
# * <chr> <dbl> <dbl>
# 1 a 1 1
# 2 b 0 1
# 3 c 0 NA
# 4 d NA 1
# 5 e 0 1
# 6 f 1 0
# 7 g 1 NA
# 8 h NA NA
# 9 i 0 0
#10 j 1 1
#11 k 1 2
Или с помощью bind_rows
library(dplyr)
bind_rows(df, list(agg = "k", x1 = 1, x2 = 2))
ПРИМЕЧАНИЕ: Здесь нам не нужно менять типы позже