【问题标题】:Subtracting subset from larger dataset in R从R中的较大数据集中减去子集
【发布时间】:2018-12-04 11:55:22
【问题描述】:

大家好:我有两个变量。第一个标题为 WITHOUT_VERANDAS。这是一个城市列表,按没有阳台的房屋的平均租金汇总(大约有 200 行):

City        Price

1 Appleton    5000
2 Ames        9000
3 Lodi        1020
4 Milwaukee   2010
5 Barstow     2000
6 Chicago     2320
7 Champaign   2000  

第二个变量名为 WITH_VERANDAS。这是一个城市列表,按带阳台的房屋的平均租金汇总(大约有 10 行,这是之前数据集的子集,因为并非每个城市都有带阳台的出租物业):

City          Price

1 Milwaukee   3000
2 Chicago     2050
3 Lodi        5000

对于 WITH_VERANDAS 列表中的每个城市,我想从第一个列表中减去该城市的 WITHOUT_VERANDAS 城市值。我想看看哪些城市的差异最高或最低。本质上,结果应该只包括 WITH_VERANDAS 数据。

我试过了:

difference <- WITH_VERANDAS$Price-WITHOUT_VERANDAS$Price
View(difference)

但是,这会返回与 WITHOUT_VERANDAS 数据集一样多的行。我也得到一个错误:

   longer object length is not a multiple of shorter object length

结果只是从 WITH_VERANDA 的第 1 行中减去 WITHOUT_VERANDAS 的第 1 行,如结果所示:(例如,输出的第 1 行将是 Milwaukee-Appleton 的值,第 2 行输出将是 Chicago - Ames,等等)

 1.  -2000
 2.  -6950

如果我只能过滤 WITHOUT_VERANDAS 以仅包含 WITH_VERANDAS 中包含的城市,我认为它会起作用。谢谢!

【问题讨论】:

  • 试试merge(with_verandas, without_verandas, by="City", all=TRUE),然后查看生成的data.frame,看看下一步该去哪里。

标签: r


【解决方案1】:

r2evans,谢谢!这很棒。现在,我有:

  City          Price.x       Price.y

  1  Appleton   NA            5000
  2  Ames       NA            9000
  3  Lodi       5000          1020
  4  Milwaukee  3000          2010

如何过滤此列表才能取出Price.x是“NA”的任何行?我的所有行都不匹配。再次感谢!

【讨论】:

  • 您的预期输出是什么? full_join(df1, df2, by = "City") %&gt;% filter(!is.na(Price.y))
  • akrun:上面的表格的所需输出我在我的最后一个响应中包含的是Lodi和密尔沃基行。 span>
  • 所以,我猜你可以基于早期评论 span>的@ 987654323
  • 太棒了。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-05-21
  • 1970-01-01
  • 2012-02-10
相关资源
最近更新 更多