76314


Rのビギナーの質問で恐縮です。

NAが含まれている2列のデータの内容を、1列にまとめて出力する方法を教えていただけませんでしょうか。

**元になるデータ:**

| A家 | B家  
---|---|---  
自転車 | 1 | NA  
バイク | NA | 2  
車 | 1 | NA  
その他 | NA | 2  
  
**出力したいもの:**

| 合計  
---|---  
自転車 | 1  
バイク | 2  
車 | 1  
その他 | 2  
  
これまで試した方法ですが、`left_join(A列,B列)` を使ったところ、エラーが出ている状況です。

**エラーメッセージ:**

[code]

    クラス "c('integer', 'numeric')" のオブジェクトに適用できるようなメソッドがありません
    
[/code]

解決を試みて、NANを0など別の数値に置き換える、1をintegerからnumericにするなどを試しましたが、いずれでも同様のエラーが出ました。

どなたかお助けくださるかた、どうぞよろしくお願いします。


CC BY-SA 4.0
2021-06-03T17:05:16.500
76313
2021-09-02T10:19:54.880
2021-06-04T00:38:41.773
3060
45647
question
r
Rで2列の内容を1列に結合する方法


`rowSums()` を使います。その際、`NA` を除外するために `na.rm=TRUE` を指定します。

[code]

    df <- data.frame(
      "製品" = c("自転車", "バイク", "車", "その他"),
      "A家" = c(1, NA, 1, NA),
      "B家" = c(NA, 2, NA, 2)
    )
    
    dfn <- data.frame(
      "製品" = df["製品"],
      "合計" = rowSums(df[,c("A家", "B家")], na.rm=TRUE)
    )
    print(dfn)
    
    ## 出力結果
    
        製品 合計
    1 自転車    1
    2 バイク    2
    3    車    1
    4 その他    2
    
[/code]


CC BY-SA 4.0
2021-06-03T17:28:12.170
76314
2021-06-03T17:28:12.170
76313
answer


tidyverseを使うと、もう少し直感的な書き方が出来ます。

[code]

    df %>%
      mutate(合計 = rowSums(.[2:3], na.rm = TRUE))
    
[/code]


CC BY-SA 4.0
2021-09-02T10:19:54.880
82182
2021-09-02T10:19:54.880
32676
76313
answer