【问题标题】:Two dataframes after merging in r are showing <0 rows> (or 0 length row names)在 r 中合并后的两个数据框显示 <0 rows> (或 0 长度行名称)
【发布时间】:2018-10-30 08:02:19
【问题描述】:

我正在 Code School 学习 R,目前正在做第 6 章的问题。现在无论我在那里学到什么,我都会在我的桌面上离线练习它。

现在,我面临的问题似乎比较简单,但我找不到任何简单的答案。

在本章中,我们介绍了两个数据集。 两者都有相同的四个端口

第一个数据集,命名为Targets,包含三列(PortPopulationWorth

Port    Population  Worth
Cartagena    35000  10000
Porto Bello  49000  15000
Havana      140000  50000
Panama City 105000  35000

第二个数据集,名为Infantry,有两列(PortInfantry)。

Port        Infantry
Porto Bello      700
Cartagena        500
Panama City     1500
Havana          2000

两个数据集都保存在两个单独的 csv 文件中。 现在加载它们后

Targets = read.csv(file.choose()) 
Infantry = read.csv(file.choose()

每当我尝试通过键入来合并它们时

merge(Targets,Infantry)

结果显示:

[1] Port       Population Worth      Infantry  
<0 rows> (or 0-length row.names)

【问题讨论】:

  • 既然没有可复现的例子,你想得到什么样的帮助?
  • 没有数据集,没有代码,输出格式错误。如果我写像你这样的帖子,只描述我遇到的一个问题,你愿意帮助我吗?
  • 请在此处向我们展示示例数据。使您的问题可重现。我回答是犯了罪,因为我认为我有一个灵丹妙药,但我没有。
  • 对不起,我是新来的。这是我的第一个问题。所以,我不知道方法。下次,我会记住你的建议。谢谢你:)
  • 您需要将输入缩进 4 次才能在代码块中显示它。以表格格式向我们展示示例行和列的实际外观。与您的合并代码相同。看看其他投票最多的 R 问题是如何被问到的。

标签: r csv merge


【解决方案1】:

从您的示例创建一些虚拟数据时,合并功能可以正常工作。

  Targets <- data.frame(
  Port=c("Cartagena", "Porto Bello"),
  Population=c(35000, 49000),
  Worth=c(10000, 15000))

Infantry <- data.frame(
  Port=c("Porto Bello", "Cartagena"), 
  Infantry=c(700, 500))

merge(Targets,Infantry)

您能否检查read.csv 函数是否正确上传文件?您可能需要更改 read.csv 函数中的参数sep 或合并函数的by.xby.y

【讨论】:

  • 检查“端口”列中的任何前导/滞后空格,即 Targets$Port
  • 我猜问题出在领先/落后的空间上。现在它起作用了。无论如何谢谢:)
  • SeGa,不相关,但最好不要使用data.frame(cbind(..)),因为它将所有列强制转换为字符,然后因子(参见str(Targets)),包括应该是数字的列。朱西使用data.frame(...)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-24
  • 2014-04-19
  • 2023-03-06
相关资源
最近更新 更多