如何解决将摘要n从一个数据框添加到另一个数据框tidyverse
我想知道是否可以用从fpc
获得的相应DATA2
替换fpc
中的DATA1
列?
library(tidyverse)
dat <- read.csv('https://raw.githubusercontent.com/rnorouzian/d/master/su.csv')
## 10000 rows ################
DATA1 <- dat %>%
group_by(across(all_of(c("gender","pre")))) %>%
summarise(n = n(),.groups = 'drop') %>%
mutate(fpc = n/sum(n)) %>%
right_join(dat)
dat2 <- read.csv('https://raw.githubusercontent.com/rnorouzian/d/master/out.csv')
## 200 rows #################
DATA2 <- dat2 %>%
group_by(across(all_of(c("gender","pre")))) %>%
summarise(n = n(),.groups = 'drop') %>%
mutate(fpc = n/sum(n)) %>%
right_join(dat2)
解决方法
您可以加入数据框并使用coalesce
从fpc
中选择DATA2
。
library(dplyr)
result <- DATA2 %>%
left_join(DATA1 %>% distinct(gender,pre,fpc),by = c('gender','pre')) %>%
mutate(fpc = coalesce(fpc.y,fpc.x)) %>%
select(names(DATA2))
nrow(result)
#[1] 200
,
在data.table
library(data.table)
setDT(DATA2)[as.data.table(unique(DATA1[c('gender','pre','fpc')])),fpc := i.fpc,on = .(gender,pre)]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。