所以我有一个数据集,我想向其中添加一个新行(其中有 70 多列)。 如果可能的话,我希望第一列包含城市名称,然后该行中的所有其他列都只有破折号。
这是一个示例数据:
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"))
请参阅下面我的代码。这段代码允许我添加一行,将多伦多添加到第一列中,但我很难将“-”添加到其他列中。我不想列出每一列,因为我的列有 70 多列。
mydata <- mydata %>% bind_rows(list(`Column1` = "TORONTO"),.)
我尝试了以下方法,但不断出现错误。
mydata <- mydata %>% bind_rows(list(`Column1` = "TORONTO"),col(2:ncol) = "-")
```
Any help would be appreciated!
最佳答案
我们可以使用add_row
library(dplyr)
mydata %>%
add_row(Column1 = "TORONTO", !!! setNames(rep('-', ncol(.)-1),
names(.)[-1]))
-输出
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 - -
默认情况下,它会在底部添加行。如果我们想在某个位置添加,请指定 .before
mydata %>%
add_row(Column1 = "TORONTO", !!! setNames(rep('-', ncol(.)-1),
names(.)[-1]), .before = 1)
-输出
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
或者可以使用summarise
和across
来c
连接-
作为第一个元素
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
关于r - 将具有特定值的新行添加到第一列中,然后将 "-"添加到其余列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73141553/