Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Add a value as a new row to a dataframe but keep all other columns NA

Here is my sample dataset:

mydata = data.frame (ID =c(1,2,3,4,5),
subject = c("His","Geo","Geo","His","Geo"),
age = c(21,24,26,23,26))

I would like to add a row at the top. I would like it to say "School 1" in the ID column while all other columns remain blank. The following is what I am looking for:

mydata = data.frame (ID =c("School 1",1,2,3,4,5),
subject = c(NA,"His","Geo","Geo","His","Geo"),
age = c(NA,21,24,26,23,26))

I have tried the following, but it ends up populating the value across all columns:

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

mydata <- rbind(c("School 1"), mydata)

I know the following code will get me what I want, but I would like to avoid having to list out NA’s as my dataset has tons of columns

mydata <- rbind(c("School 1", NA,NA), mydata)

Any help is appreciated!

>Solution :

A possible solution, based on dplyr. We first need to convert ID from numeric to character.

library(dplyr)

mydata %>% 
  mutate(ID = as.character(ID)) %>% 
  bind_rows(list(ID = "School 1"), .)

#> # A tibble: 6 × 3
#>   ID       subject   age
#>   <chr>    <chr>   <dbl>
#> 1 School 1 <NA>       NA
#> 2 1        His        21
#> 3 2        Geo        24
#> 4 3        Geo        26
#> 5 4        His        23
#> 6 5        Geo        26
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading