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 new row with a certain value into the first column and then "-" to the rest of the columns

So I have a dataset which I would like to add a new row to (it has 70+ columns in it).
If possible I would like the first column to have the name of the city and then every other column in that row to just have a dash.

Here is an example data:

mydata = data.frame (Column1 =c("1","1","1","1","1","1","1",'1',"1","1"),
                     Column2 = c("2000-01-01","2000-01-05","2000-02-02", "2000-02-12", 
                              "2000-02-14","2000-05-13", "2000-05-15", "2000-05-17", 
                              "2000-05-16", "2000-05-20"),
                     Column3 = c("A","A","B","B","B","A","A","A","C","C"))

Please see my code below. This code allows me to add a row which gives me Toronto into the first column, but im struggling to add the "-" to the other columns. I would rather NOT have to list out every single column as mine has more than 70 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 <- mydata %>% bind_rows(list(`Column1` = "TORONTO"),.)

I tried the following but kept getting errors.


mydata <- mydata %>% bind_rows(list(`Column1` = "TORONTO"),col(2:ncol) = "-")

```

Any help would be appreciated!

>Solution :

We could use add_row

library(dplyr)
mydata %>%
  add_row(Column1 = "TORONTO", !!! setNames(rep('-', ncol(.)-1),
      names(.)[-1]))

-output

   Column1    Column2 Column3
1        1 2000-01-01       A
2        1 2000-01-05       A
3        1 2000-02-02       B
4        1 2000-02-12       B
5        1 2000-02-14       B
6        1 2000-05-13       A
7        1 2000-05-15       A
8        1 2000-05-17       A
9        1 2000-05-16       C
10       1 2000-05-20       C
11 TORONTO          -       -

By default, it adds the row at the bottom. If we want to add at a position, specify .before

mydata %>%
  add_row(Column1 = "TORONTO", !!! setNames(rep('-', ncol(.)-1),
      names(.)[-1]), .before = 1)

-output

  Column1    Column2 Column3
1  TORONTO          -       -
2        1 2000-01-01       A
3        1 2000-01-05       A
4        1 2000-02-02       B
5        1 2000-02-12       B
6        1 2000-02-14       B
7        1 2000-05-13       A
8        1 2000-05-15       A
9        1 2000-05-17       A
10       1 2000-05-16       C
11       1 2000-05-20       C

Or may use summarise with across to concatenate the - as the first element

mydata %>%
   summarise(Column1 = c("TORONTO", Column1), across(-Column1, ~ c("-", .x)))
   Column1    Column2 Column3
1  TORONTO          -       -
2        1 2000-01-01       A
3        1 2000-01-05       A
4        1 2000-02-02       B
5        1 2000-02-12       B
6        1 2000-02-14       B
7        1 2000-05-13       A
8        1 2000-05-15       A
9        1 2000-05-17       A
10       1 2000-05-16       C
11       1 2000-05-20       C
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