gpt4 book ai didi

r - 如何根据空格行从 df 分区到多个 .csv?

转载 作者:行者123 更新时间:2023-12-04 08:02:59 34 4
gpt4 key购买 nike

我正在使用一个具有时间戳、3 个数字向量和一个字符向量的数据库。
基本上,每个“数据集”都由一个新行描述。当行读取每列为空 (x =\t\r\n) 时,我需要将每一系列行保存为 .csv。我的数据集中大约有 370 个。
例如,


library(dplyr)

data <- data.frame(x1 = 1:4,
x2 = 4:1,
x3 = 3,
x4 = c("text", "no text", "example", "hello"))

new_row <- c("\t\r\n", "\t\r\n", "\t\r\n", "\t\r\n")

data1 <- rbind(data, new_row)

data2 <- data.frame(x1 = 1:4,
x2 = 4:1,
x3 = 4,
x4 = c("text", "no text", "example", "hello"))

data2 <- rbind(data2, new_row)


data3 <- rbind(data1, data2)

view(data3)


这就是我的数据集的样子(没有时间戳)。我需要在一行已满或\t\r\n 之后将每组连续行导出为单独的 .csv。
我在做文本分析。每组行,具有高度可变的组大小,代表不同主题的线程。我需要分析这些单独的线程。
这样做的最佳方法是什么?我以前没有遇到过这个问题。

最佳答案

ind <- grepl("\t", data3$x4)
ind <- replace(cumsum(ind), ind, -1)
ind
# [1] 0 0 0 0 -1 1 1 1 1 -1

data4 <- split(data3, ind)
data4
# $`-1`
# x1 x2 x3 x4
# 5 \t\r\n \t\r\n \t\r\n \t\r\n
# 10 \t\r\n \t\r\n \t\r\n \t\r\n
# $`0`
# x1 x2 x3 x4
# 1 1 4 3 text
# 2 2 3 3 no text
# 3 3 2 3 example
# 4 4 1 3 hello
# $`1`
# x1 x2 x3 x4
# 6 1 4 4 text
# 7 2 3 4 no text
# 8 3 2 4 example
# 9 4 1 4 hello
-1的使用只是为了保留 "\t\r\n"行被包含在各自的组中,我们知道 cumsum(ind)应该从 0 开始.您显然可以删除第一帧:-)
从这里,您可以导出
data4 <- data4[-1]
ign <- Map(write.csv, data4, sprintf("file_%03d.csv", seq_along(data4)))

关于r - 如何根据空格行从 df 分区到多个 .csv?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66356953/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com