首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将数据帧转换为可由Iramuteq和Alceste读取的txt

如何将数据帧转换为可由Iramuteq和Alceste读取的txt
EN

Stack Overflow用户
提问于 2021-11-28 16:33:08
回答 1查看 31关注 0票数 0

Iramuteq和Alceste是文本挖掘程序(在法国仍然非常流行),它们处理格式奇怪的txt文件:语料库中的每个文档都必须以*开头,然后每个语料库变量都必须编码为*variablename_value (遵守一些格式规则),并且要分析的文本必须在新行上。例如:

代码语言:javascript
复制
**** year_2021 country_france
Bonjour, je m appelle Dario
**** year_2021 country_germany
Guten Tag, ich heisse Dario

如何将文本和语料库变量作为列的数据帧转换为这种格式?

EN

回答 1

Stack Overflow用户

发布于 2021-11-28 16:33:08

以下函数可用于将任何数据帧转换为这样的txt文件:

代码语言:javascript
复制
dataframe2iramuteq <- function(data, filename) {
  data %>% 
    rename_with(~str_replace_all(str_to_lower(.), "[\\W_]+", "")) %>% # clean column names
    drop_na() %>%
    mutate(across(1:ncol(.)-1, ~str_replace_all(., "[\\W_]+", "")), row = 1:n()) %>% # clean values
    gather(coln, value, -row) %>%
    group_by(row) %>%
    summarise(text = str_c("**** ", str_c("*", coln[-n()], "_", value[-n()], collapse = " "), "\n", last(value))) %>% 
    summarise(text = str_c(text, collapse = "\n")) %>% 
    pull(1) %>% 
    write_file(filename)
}

请注意,要分析的文本必须在数据帧的最后一列中,其他列都被视为语料库变量。

例如,如果我想分析以下数据帧:

代码语言:javascript
复制
starwars_names <- starwars %>% 
  select(2:11, 1)

我可以使用dataframe2iramuteq(starwars_names, "my_file.txt")

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70145413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档