![](/img/trans.png)
[英]R: How to create a new column in a data frame with “countif” values from another data frame?
[英]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.