繁体   English   中英

如何在从 R 中的另一个数据框计算的数据框中创建一列?

[英]How to create a column in a data frame computed from another data frame in R?

我有以下两个数据框:

> df1
  col1
1    A
2    B
3    C

> df2
  col1 col2
1    A    1
2    A    2
3    B    1
4    C    1
4    C    2
4    B    3
4    C    3
4    C    4

现在我想在df1插入一个新列(col_max) ,其中df2$col2最大值由df1$col1聚合。 所以所需的输出是:

> df1
  col1 col_max
1    A    2
2    B    3
3    C    4

到目前为止我尝试过的(失败):

df1$col_max <- max(df2[df2$col1 == df1$col1, 2])

和:

get_max <- function(col_value){
    max(df2[df2$col1==col_value, 2])
}

df1$col_max <- get_max(df1$col1)

任何帮助表示赞赏。

我们可以获得df2每个col1 max ,然后与df1 merge

merge(df1, aggregate(col2~col1, df2, max), by = 'col1')

#  col1 col2
#1    A    2
#2    B    3
#3    C    4

使用dplyr ,可以这样做:

library(dplyr)

df2 %>%  
  group_by(col1) %>% 
  summarise(col2 = max(col2)) %>%  
  right_join(df1, by = 'col1')

如果所有col1值都存在于df2无需加入,我们可以通过col1取最大值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM