如何基于两个变量的唯一配对合并r中的行?
我为这个问题的古怪标题道歉。但我很难找出R中的这个争论问题。下面是一段数据的样子:如何基于两个变量的唯一配对合并r中的行?,r,join,dataframe,merge,dplyr,R,Join,Dataframe,Merge,Dplyr,我为这个问题的古怪标题道歉。但我很难找出R中的这个争论问题。下面是一段数据的样子: example # A tibble: 6 x 6 # Groups: id, rel [4] id rel post_w avg_w b_wages a_wages <int> <date> <lgl> <dbl> <dbl> <dbl> 1 26
example
# A tibble: 6 x 6
# Groups: id, rel [4]
id rel post_w avg_w b_wages a_wages
<int> <date> <lgl> <dbl> <dbl> <dbl>
1 2699 2005-12-05 FALSE 904.5028 904.5028 NA
2 2739 2008-02-12 FALSE 1220.8129 1220.8129 NA
3 2739 2008-02-12 TRUE 2544.8736 NA 2544.874
4 2757 2008-02-06 TRUE 2624.3018 NA 2624.302
5 3240 2005-03-30 FALSE 18718.6454 18718.6454 NA
6 3240 2005-03-30 TRUE 15206.3203 NA 15206.320
示例
#一个tibble:6x6
#组:id,rel[4]
id相对邮政平均工资
126992005-12-05假904.5028904.5028NA
272392008-02-12假1220.81291220.8129NA
32739 2008-02-12真实2544.8736 NA 2544.874
427572008-02-06真实2624.3018北美2624.302
53240 2005-03-30假18718.6454 18718.6454 NA
6 3240 2005-03-30真实15206.3203北美15206.320
在我的分析中,变量id和rel一起创建了一个唯一的标识符。我试图让每个唯一的id,rel组合成为一行,其中包含平均工资,b_工资和a_工资的值。例如,在上面列出的数据中,id 2739和rel 2008-02-12有两个条目,尽管它们是我分析中的相同观察值。在一行中,观察值包含b_工资数据,在另一行中包含a_工资数据。我想做的是将这些观察结果折叠起来,使其看起来像这样
id rel post_w avg_w b_wages a_wages
<int> <date> <lgl> <dbl> <dbl> <dbl>
2 2739 2008-02-12 (dropped) (dropped) 1220.8129 2544.874
id rel post_w avg_w b_工资a_工资
272392008-02-12(下降)1220.81292544.874
post_w和avg_w列没有意义,如果需要,我可以删除它们。但我想弄清楚的是,我如何折叠具有相同id的行,将其关联到一行,并将b_工资值和a_工资值合并在一起,替换NA值,如图所示 您可以按id和rel对数据帧进行分组,然后通过获取第一个非NA值对其进行汇总;注意事项是,如果存在多个非NA值,则将取第一个值并删除其他值:
library(dplyr)
example %>%
group_by(id, rel) %>%
summarise(b_wages = na.omit(b_wages)[1],
a_wages = na.omit(a_wages)[1])
# A tibble: 4 x 4
# Groups: id [?]
# id rel b_wages a_wages
# <int> <fctr> <dbl> <dbl>
#1 2699 2005-12-05 904.5028 NA
#2 2739 2008-02-12 1220.8129 2544.874
#3 2757 2008-02-06 NA 2624.302
#4 3240 2005-03-30 18718.6454 15206.320
库(dplyr)
示例%>%
分组依据(id,rel)%>%
总结(b_工资=na.省略(b_工资)[1],
a_工资=na.省略(a_工资)[1])
#一个tibble:4x4
#组:id[?]
#id相对工资
#
#126992005-12-05904.5028NA
#2 2739 2008-02-12 1220.8129 2544.874
#327572008-02-06NA 2624.302
#4 3240 2005-03-30 18718.6454 15206.320
我在这里尝试了你的方法,效果非常好!非常感谢!