是否有 R 函数将单元格拆分为新行(同时复制数据)?
Is there a R function to split cell into new rows (while duplicating data)?
我有这样一个数据框:
Sent_From <- c("1","2","3","4")
Timestamp <- c("01:00","02:00","03:00","04:00")
Send_To <- c("id1", "id2,id3", "id4", "id5,id1,id2,id4")
mydf <- data.frame(Sent_From, Timestamp, Send_To)
我想为“Send_to”列中的每个观察结果创建一个新行,以便以这样的方式结束:
Sent_From <- c("1","2","2","3","4","4","4","4")
Timestamp <- c("01:00","02:00","02:00","03:00","04:00","04:00","04:00","04:00")
Send_To <- c("id1", "id2","id3", "id4", "id5","id1","id2","id4")
mydf_spreaded <- data.frame(Sent_From, Timestamp, Send_To)
我该如何着手解决这样的问题?我成像将列“Send_to”中的每个单元格拆分为每个“,”,但我现在不知道如何为具有相同数据的每个拆分单元格创建新行。
基本上我正在寻找像 这样的解决方案,但在 R!
中
我们可以使用separate_rows
library(dplyr)
library(tidyr)
mydf %>%
separate_rows(Send_To)
-输出
# A tibble: 8 x 3
Sent_From Timestamp Send_To
<chr> <chr> <chr>
1 1 01:00 id1
2 2 02:00 id2
3 2 02:00 id3
4 3 03:00 id4
5 4 04:00 id5
6 4 04:00 id1
7 4 04:00 id2
8 4 04:00 id4
我有这样一个数据框:
Sent_From <- c("1","2","3","4")
Timestamp <- c("01:00","02:00","03:00","04:00")
Send_To <- c("id1", "id2,id3", "id4", "id5,id1,id2,id4")
mydf <- data.frame(Sent_From, Timestamp, Send_To)
我想为“Send_to”列中的每个观察结果创建一个新行,以便以这样的方式结束:
Sent_From <- c("1","2","2","3","4","4","4","4")
Timestamp <- c("01:00","02:00","02:00","03:00","04:00","04:00","04:00","04:00")
Send_To <- c("id1", "id2","id3", "id4", "id5","id1","id2","id4")
mydf_spreaded <- data.frame(Sent_From, Timestamp, Send_To)
我该如何着手解决这样的问题?我成像将列“Send_to”中的每个单元格拆分为每个“,”,但我现在不知道如何为具有相同数据的每个拆分单元格创建新行。
基本上我正在寻找像
我们可以使用separate_rows
library(dplyr)
library(tidyr)
mydf %>%
separate_rows(Send_To)
-输出
# A tibble: 8 x 3
Sent_From Timestamp Send_To
<chr> <chr> <chr>
1 1 01:00 id1
2 2 02:00 id2
3 2 02:00 id3
4 3 03:00 id4
5 4 04:00 id5
6 4 04:00 id1
7 4 04:00 id2
8 4 04:00 id4