【问题标题】:Create table in Excel from messy text从凌乱的文本在 Excel 中创建表格
【发布时间】:2018-01-08 14:32:32
【问题描述】:

我想清理我的文本数据并将其转换为 Excel 表格,以便在 R 中进一步使用。我已设法将我的杂乱数据转换为一个文本文档,其中包含 500 行对应于 500 个观察值。它们的结构类似于:

Name$Johnny Cash$Birth$1932$Gender$Male$Occupation$Singer$Death$2003
Name$Elvis Presley$Birth$1935$Gender$Male$Death$1977$Occupation$Singer
Name$June Carter$Birth$1929$Gender$Female$Occupation$Singer$Death$2003

最后应该是这样的:

我已经开始使用 Excel 中的“文本到列”功能。如果行完全相似,我可以使用这些公式:

=IF(ISODD(COLUMN(A1)),A1,"")
=IF(ISEVEN(COLUMN(B1)),B1,"")

这将使我的表格看起来像这样:

但是,我拥有的数据不是那么有序 - 有时,条目的顺序不同(首先死亡,然后是职业),有时,缺少一个类别,例如在这个例子中:

我不知道如何从这里走得更远 - Excel 中是否有一个宏可以帮助我,或者我会更好地尝试以某种方式在 R 中实现这一点? 谢谢!

【问题讨论】:

    标签: r excel text


    【解决方案1】:

    您可以将文本文件组织为 csv 文件(逗号分隔值)并在 Excel 或 R 中轻松打开。

    文本文件将如下例所示。如您所见,每一行都是一个主题:

    "name", "birth", "gender", "occupation","death"
    "Johnny Cash", 1932, "male", "singer", 2003
    

    要将您的文本文件重新格式化为 csv,您只需替换例如"name$" 在所有行中都带有 "。将 $birth$ 替换为 ", "。您必须有点创意才能将逗号和引文标记放在正确的位置,但可以做到。最后添加第一个包含标题的行,即:

     "name", "birth", "gender", "occupation","death"
    

    【讨论】:

    • 原来的文件其实是中文的,这就是$的来源。当然,我可以将 $ 更改为逗号,但是,问题是如果我比较第 2 行和第 3 行,它会以“姓名”、“出生”、“性别”、“职业”、死亡”,然后依次为“姓名”、“出生”、“性别”、“死亡”、“职业”
    • 啊,我明白了,没有注意到数据不正确。这是您正在使用的标准符号吗?如果是,它叫什么?如果不是,我想需要一些 bash 脚本或其他编程来解决问题。
    • 标准符号到底是什么意思?原谅我的无知!
    • 别担心,其他人是否使用这种组织文本文件的方式?如果是,则应该有此样式的名称(例如,$ 分隔文件)。然后,您可以谷歌或询问如何将“$ 分隔文件”转换为 csv 或类似文件。如果是您自己编造的,则可能没有内置解决方案。您必须进行一些自定义编程才能使其处于正确的形状。
    • 原始数据来自中国书目数据数据库。我已经联系了客户服务,但我怀疑他们是否有适合我的解决方案。你会推荐我在哪里进行自定义编程?
    猜你喜欢
    • 2022-01-17
    • 2017-08-31
    • 1970-01-01
    • 2016-05-13
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 2020-02-04
    • 2012-10-16
    相关资源
    最近更新 更多