如何 '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
,其中包含一些 NA
s但不计入计算。
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
我有一个类似如下的数据框:
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
,其中包含一些 NA
s但不计入计算。
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