如何 'count' 数据框中多列单行中的非空值数量

How to 'count' number of non-empty values in a single row across multiple columns in a dataframe

我有一个类似如下的数据框:

Comp1  Comp2  Comp3  Comp4
0.5      0.4    na     0.6
0.6      na     na      0.7
na       0.4    na      1.1

每一行代表一个不同的人。对于每个人,我想计算他们在这些列的特定行中有多少个非空值,并将其保存为一个新变量

谢谢!

如果你在谈论 R 中的缺失值,它用大写字母 NA 表示,而不是 na,否则,R 会将其视为字符串, 不为空。

此外,我在您的 df 中人为地包含了一些 Name,就像每一行代表一个 Name,以及一个人为的 Comp5,其中包含一些 NAs但不计入计算。

rowSums()顾名思义,计算行的总和。
is.na(df[, 2:4]) 使它只计算 df 中从第 2 列到第 4 列的 NA

df <-read.table(header = T, 
                text = 
                  "Name Comp1  Comp2  Comp3  Comp4  Comp5
                A 0.5      0.4    NA     0.6  NA
                B 0.6      NA     NA      0.7 1
                C NA       0.4    NA      1.1 NA")

df$Count_NA <- rowSums(is.na(df[, 2:4]))

输出

  Name Comp1 Comp2 Comp3 Comp4 Comp5 Count_NA
1    A   0.5   0.4    NA   0.6    NA        1
2    B   0.6    NA    NA   0.7     1        2
3    C    NA   0.4    NA   1.1    NA        2