数据帧拆分

时间:2016-06-06 13:38:38

标签: r dataframe split

我有一个大矩阵(3600行)和1列(字符)称为数据,我想在每次出现“Neue Zeitung”时拆分矩阵。我尝试过存储索引然后进行拆分的事情。但它不起作用

    index.mat <- c()
    for (i in 1:nrow(data)) {
      if (substr(data[i,1],1,12)=="Neue Zeitung")==T) {
        index.temp <- i
      }
      index.mat <- rbind(index.mat,index.temp)
    }

然后使用拆分功能,但这是最好的方法吗?

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

您可能不需要显式循环。相反,您可以使用cumsumsplit

完全匹配:

split(dat, cumsum(dat[,1] == "Neue Zeitung"))

对于部分匹配/正则表达式匹配:

split(dat, cumsum(grepl("Neue Zeitung", dat[,1])))

对于基于位置的部分匹配:

split(dat, cumsum(substr(dat[,1], 1, 12) == "Neue Zeitung"))

split(dat, cumsum(grepl("^Neue Zeitung.*", dat[,1])))

答案 1 :(得分:1)

grepl功能可能更适合:

index.mat <- which(grepl("Neue Zeitung", data[,1]))