別の共通変数の値が等しい場合にのみ、あるデータフレームの値を別のデータフレームの値に置き換えるR関数はありますか?

user3385922

私は2つのdfを持っています。別の列の値が両方のdfと一致する場合にのみ、あるdfの列から別のdfの列に値を転送したいと思います。

最初のdfは次のようになります。

A = data.frame(name = c('Ann', 'Charlie', 'James', 'Mary'),
count = c(0,0,0,0))

2番目のdfは次のようになります。

B = data.frame(name = c('Charlie', 'Mary'), count = (4, 11))

私が欲しいのは、カウント値をdfAからdfBのカウント値に変更することです。ここで、dfBの名前はAの名前と一致します。

新しいdfA:

name      count 
Anne        0
Charlie     4
James       0
Mary        11

これにdplyrを使用する方法はありますか?

Ashirwad

これを実現する方法は次のとおりです。

> dplyr::left_join(A, B, "name") %>%
      rowwise() %>%
      transmute(name, count = sum(count.x, count.y, na.rm = TRUE))
Source: local data frame [4 x 2]
Groups: <by row>

# A tibble: 4 x 2
  name    count
  <chr>   <dbl>
1 Anne        0
2 Charlie     4
3 James       0
4 Mary       11

または、

> left_join(A, B, "name") %>%
      transmute(name, count = rowSums(select(., starts_with("count")), na.rm = TRUE))
     name count
1    Anne     0
2 Charlie     4
3   James     0
4    Mary    11

警告: 2番目のアプローチは設計でサポートされていないことをどこかで読みました(どこを思い出せません)が、正しい答えが得られます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ