在R中满足条件时向数据帧添加值

时间:2014-04-10 19:24:44

标签: r

我有一个这样的数据框:

ID1   ID2   Position  Grade   Day
234   756      2        87     27
245   486      4        66     26
321   275      1        54     20
768   656      6        51     7
421   181      1        90     14
237   952      8        68     23
237   553      4        32     30

我还有另一个这样的数据框:

ID1   ID2   Day  Count
234   756    2     3 
245   486    2     1
209   706    2     1
124   554    2     2
237   553    2     4

我需要将Counts添加到ID1,ID2和Day匹配的第一个数据帧。但是,我还需要这样做,以便如果没有匹配(在第一个数据帧中ID1,ID2和Day的第二个数据帧中没有计数),则在该位置放置零。所以最终的数据框就像是:

ID1   ID2   Position  Grade   Day   Count
234   756      2        87     27     3
245   486      4        66     26     1
321   275      1        54     20     0
768   656      6        51     7      0
421   181      1        90     14     0
237   952      8        68     23     0
237   553      4        32     30     4

1 个答案:

答案 0 :(得分:1)

这很有用

> # First, merge df1 and df2
> df3 <- merge(df1, df2, by=c("ID1", "ID2"), all.x=TRUE)
> # Replace NA with 0's
> transform(df3[, -6], Count=ifelse(is.na(Count), 0, Count))
  ID1 ID2 Position Grade Day.x Count
1 234 756        2    87    27     3
2 237 553        4    32    30     4
3 237 952        8    68    23     0
4 245 486        4    66    26     1
5 321 275        1    54    20     0
6 421 181        1    90    14     0
7 768 656        6    51     7     0