各列がアンケート項目を表すワイド形式のアンケート データのデータ フレームがあります。
データは次のようになります。
df <- data.frame(Q1 = c(1, 4, 2, 3, 1, 1, 4, 4, 1, 2),
Q2 = c(NA, 3, 1, 4, NA, NA, 3, 4, 1, 2),
Q3 = c(3, 4, 1, 2, 4, NA, NA, 1, 1, 2),
Q4 = c(NA, 4, 1, 1, 1, 3, NA, 2, 2, NA))
この関数を使用して、rowSums
「4」ではない各行の値を合計し、NA を除外して、結果を非 4 列と非 NA 列の数で除算します (dplyr パイプを使用)。基になるデータ フレームの 4 を置き換えたくありません。そのまま残したい。
結果を非 4 列と非 NA 列の数で割る方法がわからないため、質問の最初の部分だけを試してみました。次のコードを使用して最初の部分を試みましたが、うまくいきませんでした:
library(dplyr)
df <- df %>%
as.data.frame() %>%
mutate(sum = rowSums(.[. != 4, ], na.rm = TRUE))
上のスクリーンショットでは、「平均」列は、非 4 および非 NA 値の合計を非 4 および非 NA 列の数で割ったものです。
ありがとう!