私は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を使用する方法はありますか?
これを実現する方法は次のとおりです。
> 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]
コメントを追加