【问题标题】:How to apply aggregate with more data frame in r [duplicate]如何在 r [重复] 中应用具有更多数据框的聚合
【发布时间】:2018-10-29 05:47:58
【问题描述】:

我有 2 个数据框,我想从所有数据框应用聚合, 我的数据非常大,所以..假设我的数据是这样的:

data1
ID   Name    
1     A        
2     B       
3     C       
4     D       
5     E      
6     F       



data2
ID   Age
1      4 
2      5
3      12
4      53
5      2
6      8

应用聚合函数后,我想要这些结果:

data_result
ID   Name    Age
1     A       4 
2     B       5
3     C       12
4     D       53
5     E       2
6     F       8

小笔记:

  1. 数据框的长度不同(行和列)。
  2. 我尝试使用按功能分组,但不起作用,请告诉我这个错误:

    Error in UseMethod("group_by_") : 
    no applicable method for 'group_by_' applied to an object of class 
    "character"
    
  3. 我不需要数据框中的所有列,每列只需要 2 列。

  4. 这些任务在 excel 中很容易实现,但是在 r 中???

任何人都可以帮助我吗?

谢谢

【问题讨论】:

  • 你可以先合并数据帧,使数据帧的长度相等,否则聚合你会得到误导性的值。
  • 不起作用,看来:'by'必须指定唯一有效的列

标签: r dataframe dplyr


【解决方案1】:

您可以使用

在 ID 上将 2 个数据框合并在一起
merge(data1, data2, by="ID")

【讨论】:

  • 不起作用,看来:'by'必须指定唯一有效的列
  • 您究竟是如何将数据帧加载到 R 中的?能给我举个例子吗? class(data1) 返回什么?
  • 返回“data.frame”
【解决方案2】:

在R中使用merge()函数如下:

merge (x = dataframe1, y= dataframe2, by = "commom_column")

如果数据帧的长度不同,这不是问题。对于选择列,您可以使用 dplyr 包中的 select() 函数,如下所示:

dataframe1 <- select(dataframe1, c(column_names))

针对您的问题:

data1 <- select(data1, c(ID, name))
data2 <- select(data1, c(ID, Age))
merge(data1, data2, by = "ID")    

【讨论】:

  • 谢谢,但是当我使用 selec() 时,似乎出现了这个错误:必须计算列位置或名称,而不是双向量
  • 你能分享示例数据我会整理一下
猜你喜欢
  • 2017-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-22
  • 1970-01-01
相关资源
最近更新 更多