【问题标题】:Is there a R function to split cell into new rows (while duplicating data)? [duplicate]是否有 R 函数将单元格拆分为新行(在复制数据时)? [复制]
【发布时间】:2021-10-16 06:51:00
【问题描述】:

我有一个这样的数据框:

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”列中的每个单元格按每个“”进行分割,但我现在不知道如何为每个具有相同数据的分割单元格创建一个新行。 基本上我正在寻找像here 这样的解决方案,但在R!

【问题讨论】:

    标签: r dataframe dplyr tidyr


    【解决方案1】:

    我们可以使用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  
    

    【讨论】:

    • 好吧,现在我觉得很愚蠢,我预计这将需要一个复杂的 if 循环来遍历每一行,拆分单元格,复制其他值并粘贴它们等等。不知道这个功能到现在,非常感谢! :)
    猜你喜欢
    • 2018-04-28
    • 1970-01-01
    • 1970-01-01
    • 2012-01-22
    • 2021-04-24
    • 2016-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多