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

Posted

技术标签:

【中文标题】如何将数据帧转换为 Iramuteq 和 Alceste 可读的 txt【英文标题】:How to convert a dataframe to a txt readable by Iramuteq and Alceste 【发布时间】:2022-01-05 18:06:54 【问题描述】:

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

**** year_2021 country_france
Bonjour, je m appelle Dario
**** year_2021 country_germany
Guten Tag, ich heisse Dario

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

【问题讨论】:

【参考方案1】:

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

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)


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

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

starwars_names <- starwars %>% 
  select(2:11, 1)

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

【讨论】:

以上是关于如何将数据帧转换为 Iramuteq 和 Alceste 可读的 txt的主要内容,如果未能解决你的问题,请参考以下文章

如何将宽数据帧转换为长数据帧

如何将数据帧切片转换为新数据帧

Databricks:如何将 %python 下的 Spark 数据帧转换为 %r 下的数据帧

如何将 4 行数据帧转换为 R 中的 2*2 矩阵?

如何将稀疏的 pandas 数据帧转换为 2d numpy 数组

如何将火花数据帧数组转换为元组