【问题标题】:How to make a dataframe from character string如何从字符串制作数据框
【发布时间】:2014-03-28 19:36:25
【问题描述】:

为了简单起见,我有一个长字符串(800 个变量 * 100 个案例)被缩短(3 个变量 * 4 个案例),我需要从中创建一个数据框;

c("eriomo", "1", "r", ".", ".", "erioscue", "100", "r", ".", ".", "fantastic code", "4", "r", "100", "r-1")

我是 r 的新手,并且已经广泛搜索了答案但无济于事,因此,如果这很难理解或用错误的技术术语措辞,我深表歉意。 - 在任何人问之前,这是一个分类程序的特别不友好的输出,通常我会从格式良好的 csv 中读取。有没有一种快速的方法可以让数据看起来像这样;

“eriomo”“erioscue”“神奇代码”

=> 上面的变量(都有4个或更多字符)

“1r”“100 r”“4 r”

=> 一行case到对应的变量

=> 是否可以将其中两个案例合并到每个对应变量下的一列中

“..” “..” “100 r-1”

=> 流程一直持续到完成 2 个案例(如果两个案例合并)或 4 个案例(如果未合并)

所有填补从一个变量到下一个变量的空白的“案例”都属于前一个(前一个)变量。

任何帮助将不胜感激, J

【问题讨论】:

  • 理解你想要实现的目标有点棘手。特别是最后两段是神秘的。我认为,如果您还发布了所需的输出,可能会使用更小的示例(更少的案例),这将有助于发现用于将输入转换为输出的“规则”。谢谢。
  • 非常抱歉 Henrik 我刚刚注意到原始问题的结构在您上传时发生了变化。它现在被修改了,我希望这使它更容易解释。以下是部分答案,现在应该阐明用于转换输入和输出的规则。提前感谢您查看我的问题。 J
  • @JamieT 我仍然无法理解您希望最终输出的样子。请发布您希望从更简单的示例中获得的数据框。
  • 抱歉,不知道如何在不将格式更改为更令人困惑的东西的情况下执行此操作(我花了很多时间尝试此操作)。如果您遵循 josilber 的代码,您将获得一个非常接近我所追求的 df

标签: database string r substring data-manipulation


【解决方案1】:

按照您对您想要的东西的描述,我遇到了一些麻烦,但这就是您要找的东西吗?我将您提供的向量存储在变量 dat 中。

mat <- matrix(dat, ncol=3)
header <- mat[1,]
df <- data.frame(mat[-1,])
names(df) <- header

最后,df 是一个包含 3 个变量和 44 个观测值的数据框。

【讨论】:

  • 谢谢 Josilber - 这工作得很好,很抱歉这个问题很难解释。我已经缩短了上面发布的示例。您知道现在是否可以将每个变量的第 1 行和第 2 行合并到同一列中
猜你喜欢
  • 2022-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-01
  • 1970-01-01
  • 2016-06-09
相关资源
最近更新 更多