这是文本文件(20 txt文件)
在每个文本文件中
Suhas - 政治 教皇弗朗西斯突出了叙利亚和伊拉克难民的困境,并在对土耳其进行重要访问时开始谴责极端主义。
萨钦 - 体育 周五在澳门公开赛大奖赛金牌赛中击败中国队的韩力之后,卫冕冠军PV Sindhu继续保持良好表现并进入女子单打比赛的半决赛
Suhas - 政治 美国周五提出上诉,质疑世界贸易组织的裁决,该裁决称其未能使其肉类标签法与全球贸易规则保持一致。 萨钦 - 体育 在没有进球的四场比赛之后,孟买市足球俱乐部希望结束他们的目标干旱,并在周五在贾瓦哈拉尔尼赫鲁体育场接手德里迪纳摩队时重新获胜。
这将继续下去。
问题: 我们需要将所有Suhas数据复制到一个txt文件中,将Sachin数据复制到另一个txt文件中。我们需要将2个txt文件中的两个数据分开。
我已经展示了1 txt但需要做(20 txt文件)。我的意思是Suhas为20 txt,Sachin为20 txt。
需要您的帮助来构建R代码
答案 0 :(得分:0)
在这里,我创建了两个以files
开头的Sports
,即Sports1.txt
,Sports2.txt
files <- list.files(pattern='^Sports\\d')
files
#[1] "Sports1.txt" "Sports2.txt"
lst <- lapply(files, function(x) {x1 <- readLines(x)
x2 <- x1[x1!='']
indSuh <- grep("^Suhas", x2)
indSach <- grep("^Sach", x2)
list(x2[indSuh], x2[indSach])})
Map(function(i, x, y){nm2 <- paste(y, i, '.txt', sep='')
lapply(seq_along(x), function(j) write.table(x[[j]],
file=nm2[j]))},seq_along(lst), lst, list(nm1))
答案 1 :(得分:0)
以下是使用我维护的两个软件包的方法, qdap 和 qdapTools 。我刚刚为 qdapTool loc_split
添加了一个功能,可以很好地为此工作,但您需要开发版本。
首先让包开始使用:
library(devtools)
install_github("trinker/qdapTools")
library(qdap); library(qdapTools)
现在代码:
## path of folder with txt files
fileloc <- "mydata"
## Read in Files
fls <- dir(fileloc)
input <- file.path(fileloc , fls[tools::file_ext(fls) == "txt"])
m <- unlist(lapply(input, readLines))
## Determine location of blank lines
locs <- grep("^([a-zA-Z]+)\\s*-\\s*([a-zA-Z]+)$", m)
## split text on locations of group name with hyphen
out1 <- loc_split(m, locs)
## extract the meta data
meta <- sapply(out1, "[", 1)
## create a data.frame of text and meta data
dat <- data.frame(
setNames(colSplit(meta, "-"), c("group", "topic")),
text = sapply(out1, function(x) unbag(x[-1])),
stringsAsFactors = FALSE
)
## split on the group variable (could do for topic or topic & group)
out2 <- split(dat[["text"]], dat[["group"]])
## Write out the lines using cat and the Map function
Map(function(x, y) {
cat(paste(x, collapse="\n\n"), file=sprintf("%s.txt", y))
}, out2, names(out2))
请注意,这首先会生成一个数据框,其中包含有关每个文本的元数据:
group topic text
1 Suhas Politics Pope Francis has highlighted the plight of re...
2 Sachin Sports Defending champion PV Sindhu continued her go...
3 Suhas Politics The United States lodged an appeal on Friday ...
因为这很有用。