我有2个数据集,我想以特定方式合并它们,
d1 <- read.table(text="
a c
1 100
2 1000
3 10000", header=TRUE)
d2 <- read.table(text="
a b
1 x
1 y
2 x
2 x
2 y
3 x", header=TRUE)
对于相同的“ a”值,只有两个不同的“ b”值:“ x”和“ y”,我想将“ c”的值除以“ x”的数量,并且“ y”的数量。也就是说,对于每个“ a”值,所有“ x”和“ y”都共享原始的c值。 输出如下:
# dataset 2
# a b c
# 1 x 100
# 1 y 100
# 2 x 500
# 2 x 500
# 2 y 1000
# 3 x 10000
我尝试过使用library(dplyr),但不确定哪种方法最好。 谢谢!
答案 0 :(得分:0)
我想这就是你的追求
left_join(d1, d2) %>% group_by(a, b) %>% mutate(c=c/n()) %>%
select(a,b,c)
# a b c
# <dbl> <fct> <dbl>
# 1 1 x 100
# 2 1 y 100
# 3 2 x 500
# 4 2 x 500
# 5 2 y 1000
# 6 3 x 10000
在这里我们加入,然后按每个a / b组合中的值分组并通过计数归一化