在基于 Wikitable 的 R 数据框中拆分多行单元格并保留 'category' 列

Split multi-line cell in an Wikitable based R dataframe & keep 'category' column

我有一个格式的数据框:

Location       Date
         1 - 10/10/2015
         2 - 11/10/2015 
Place    3 - 12/10/2015
         5 - 12/10/2015
NxtPlace 4 - 12/10/2015

...

第二列有很多包含日期(事件)的多行行,第一列有它们的位置,nrow 等于位置而不是事件日期的 n。

我愿意: 1. 每个事件都有一行 2. 重复每个匹配日期旁边的位置

实际数据集就像您使用以下代码阅读的数据集,并且(我认为)是一种相当常见的格式,尤其是在 Wiki 表格中:

library(XML)
WikiMeets <- readHTMLTable(doc="http://meta.wikimedia.org/wiki/Meetup/UK/Footer_list")
WikiMeets <- as.character(WikiMeets[[1]]) #it'll save as factor otherwise

我试图编写一个循环或通过每一行应用于 运行,并在第 2 列中将每个“\n”替换为第 1 个值 + 一些逗号,例如“,London,”那么只拆分第二列就很容易了。我觉得这可能是一个非常不优雅的解决方案(无论如何我都不正确),我看了看 ddply 和 split 但也在那里挣扎。

library(plyr)
library(stringr)
NewData <- ddply(messy_table, .(Location), 
  function(x) data.frame(WDate=str_split(x$Date, "\n")[[1]]))

这给出了正确的数据形式:

Location       WDate
Place    1 - 10/10/2015
Place    2 - 11/10/2015 
Place    3 - 12/10/2015
NxtPlace 5 - 12/10/2015
NxtPlace 4 - 12/10/2015

...

我不得不说,我不太明白它是如何工作的(!)(我玩了一点)但它确实如此。