R中每个类别的合并级别

R中每个类别的合并级别,r,data-manipulation,R,Data Manipulation,我有以下数据帧: year<- c(rep(c("1995"),4)) cou <- c(rep(c("AT"),4)) var_far1<- c("A","B", "C", "E") x1 <- c(NA,2,NA,3) var_far2<- c("A","B", "C-E", "C-E") data1<-data.frame(cou,year,var_far1,x1,var_far2) year<- c(rep(c("1996"),

我有以下数据帧:

year<- c(rep(c("1995"),4))
cou <- c(rep(c("AT"),4))
var_far1<- c("A","B", "C", "E")
x1      <- c(NA,2,NA,3)
var_far2<- c("A","B", "C-E", "C-E")

data1<-data.frame(cou,year,var_far1,x1,var_far2)  

year<- c(rep(c("1996"),4))
cou <- c(rep(c("AT"),4))
var_far1<- c("A","B", "C", "E")
x1      <- c(NA,2,5,3)
var_far2<- c("A","B", "C-E", "C-E")

data2<-data.frame(cou,year,var_far1,x1,var_far2)  

data<-rbind(data1,data2)
我想根据
x1
cou

我在R怎么做

更新:预期结果如下所示:

cou year var_far1 x1 var_far2 x1_new
1  AT 1995        A  NA        A    NA
2  AT 1995        B  2        B    2.0
3  AT 1995        C NA      C-E    3.0
4  AT 1995        E  3      C-E    3.0
5  AT 1996        A  1        A    1.0
6  AT 1996        B  2        B    2.0
7  AT 1996        C  5      C-E    4
8  AT 1996        E  3      C-E    4

我相信您的预期产出有误,如果有,我认为这应该满足您的要求:

library(dplyr)
data %>%
  group_by(cou,year,var_far2) %>%
  mutate(x1_new=mean(x1,na.rm=T)) %>%
  ungroup
# # A tibble: 8 x 6
#      cou   year var_far1    x1 var_far2 x1_new
#   <fctr> <fctr>   <fctr> <dbl>   <fctr>  <dbl>
# 1     AT   1995        A     1        A      1
# 2     AT   1995        B     2        B      2
# 3     AT   1995        C    NA      C-E      3
# 4     AT   1995        E     3      C-E      3
# 5     AT   1996        A     1        A      1
# 6     AT   1996        B     2        B      2
# 7     AT   1996        C     5      C-E      4
# 8     AT   1996        E     3      C-E      4
库(dplyr)
数据%>%
分组依据(cou、年份、var\u far2)%>%
突变(x1_新=平均值(x1,na.rm=T))%>%
解组
##A tibble:8 x 6
#年份风险1 x1风险2 x1新
#             
#1在1995年A 1 A 1
#2在1995年B 2 B 2
#3在1995年C-NA C-E 3
#4在1995年E 3 C-E 3
#1996年第5届A 1 A 1
#6在1996年B 2 B 2
#7 1996年C 5 C-E 4
#8 1996年E 3 C-E 4

不太清楚“平均值”是什么意思。您最初是如何从
x1==5
x1==3
获得第7行和第8行的
4.5
的?出于某种原因,我没有得到预期的结果。我稍微修改了我的工作数据库,以包含一个NA变量。我将再次检查我的数据库中是否存在我没有注意到的其他问题。
library(dplyr)
data %>%
  group_by(cou,year,var_far2) %>%
  mutate(x1_new=mean(x1,na.rm=T)) %>%
  ungroup
# # A tibble: 8 x 6
#      cou   year var_far1    x1 var_far2 x1_new
#   <fctr> <fctr>   <fctr> <dbl>   <fctr>  <dbl>
# 1     AT   1995        A     1        A      1
# 2     AT   1995        B     2        B      2
# 3     AT   1995        C    NA      C-E      3
# 4     AT   1995        E     3      C-E      3
# 5     AT   1996        A     1        A      1
# 6     AT   1996        B     2        B      2
# 7     AT   1996        C     5      C-E      4
# 8     AT   1996        E     3      C-E      4