【问题标题】:How to replace incorrect characters in a R data frame [closed]如何替换 R 数据框中的不正确字符 [关闭]
【发布时间】:2020-02-07 19:45:10
【问题描述】:

我正在使用 R 分析一个大型数据集。

其中一个名为 EssentialSum 的数据框出现错误,其中数据输入为 station 26 midway 而不是 station 26

我想解决这个问题,以便我可以通过Station.Name 将此表正确连接到另一个表。

我根据互联网搜索尝试了一些东西,但以下尝试没有奏效:

#using the gsub function to replace names for station 26
EssentialRep <- gsub("station 26 midway", "station 26", EssentialSum)

我得到了一个奇怪的 EssentialRep 表,只有 5 条记录,这根本不是我想要的。

#using replace function to replace names for station 26
EssentialRep <- replace(EssentialSum, Station.Name = "station 26 midway", Station.Name = "station 26")

我收到以下错误:

替换错误(EssentialSum, Station.Name = "station 26 midway", Station.Name = "station 26") : 未使用的参数(Station.Name = "station 26 midway", Station.Name = "station 26")

【问题讨论】:

  • 请显示dput(EssentialSum)replace 的第二种情况下,= 将是==,并且第三个参数中不需要Station.Name =,即replace(EssentialSum, Station.Name == "station 26 midway", "station 26")
  • 谢谢!当我尝试您建议的替换选项时,我得到了这个:
  • [&lt;-.data.frame(*tmp*, list, value = "station 26") 中的错误:找不到对象“Station.Name”
  • 这里是 EssentialSum 的结构: Telem.ID Fish.Name Date Station.Name n() 1 20160 McKenna 2016-12- 21 00:00:00 站 4 1 2 20160 麦肯纳 2016-12-22 00:00:00 站 4 1 3 20160 麦肯纳 2016-12-23 00:00:00 站 4 2 4 20160 麦肯纳 2016-12-23 00 :00:00 站 5 2 5 20160 麦肯纳 2016-12-24 00:00:00 站 4 1 6 20160 麦肯纳 2016-12-24 00:00:00 站 5 1 >
  • 我可以这样做,但是数据集有4600条记录,所以dput提供了大量的数据。我还应该这样做吗?

标签: r replace gsub


【解决方案1】:

先复制一份:

 EssentialRep <- EssentialSum

只替换它出现的列中的值:

 EssentialRep$Station.Name <- gsub("station 26 midway", "station 26", 
                                                     EssentialRep$Station.Name)

您对gsub 所做的工作是使用整个数据框作为输入,但gsub 只需要一个字符向量。

您在评论object 'Station.Name' not found 中报告的错误令人担忧。让我想知道列名中是否有非打印字符或空格。同样令人担忧的是,您的结构仅显示四个列名,但显示了 6 个数据类型。 (你显然有一个“tibble”,技术上是一个“tbl_df”类的对象)

【讨论】:

  • 非常感谢您对 gsub 的评论。那行得通! EssentialSum 中实际上有 5 列和 5 种数据类型 - n() 是列标题。我试图通过使用 head(EssentialSum) 以简短的形式呈现数据类型,这导致了 tibble。
猜你喜欢
  • 2020-06-28
  • 2014-02-06
  • 2017-08-11
  • 1970-01-01
  • 1970-01-01
  • 2012-09-04
  • 1970-01-01
  • 2018-12-29
  • 2011-07-26
相关资源
最近更新 更多