我有一个Excel.CSV文件,其中一列有对话的转录。每当说话者使用西班牙语时,西班牙语都写在括号内。
举个例子:
所以[通常]也许[我来这里一个新媒体]喜欢我锻炼和我喜欢要么去网上上课或亲自喜欢它取决于一天
理想情况下,我希望分别提取英语和西班牙语,这样一个文件将包含所有西班牙语单词,另一个文件将包含所有英语单词。
有什么想法吗?或者使用哪个函数/包?
编辑以添加:这个Excel工作表中大约有100个包含文本的单元格。我想我困惑的地方是如何将整个CSV视为"字符串"?
我不想把每个单元格都复制粘贴成一个"字符串"--我希望有人能上传整个CSV
1条答案
按热度按时间z2acfund1#
要将CSV加载到R中,您可以使用
readr::read_CSV(YOUR_FILE.CSV)
。还有更多的选项,如果您使用RStudio中的“File -- Import Dataset -- From Text(readr)”菜单选项,其中一些选项是可用的。假设你已经加载了数据,你可能需要依靠某种形式的“regex”来根据括号将文本解析成几个部分。有一些基本的R函数可以做到这一点,但是我发现
stringr
(tidyverse
元包的一部分)中的函数对此很有用。tidyr::separate_rows
是一个将文本拆分成更多行的好方法。在下面的正则表达式中,有一些成分:
(?=...)
意味着在[
之前拆分,但保留它。\\[
是我们引用[
的方式,因为括号在正则表达式中有特殊的含义,所以我们需要对它们进行“转义”,将它们视为文字字符。(?<=...)
表示在]
之后拆分,但保留它。|
表示“或”(当然,我仍然是一个正则表达式初学者,所以我希望有更简洁的方法来做到这一点。)
所以我们可以这样做:
结果