计算 r 中的有效行数
Count the number of valid rows in r
我有一些行的计数练习 NA
。
这是一个示例数据集,其中包含 cat
和 id
个变量。
df <- data.frame(cat=c("A","A","A","B","B","C","C","C","C"),
id = c(11,12,13,NA,NA,21,21,23,24))
> df
cat id
1 A 11
2 A 12
3 A 13
4 B NA
5 B NA
6 C 21
7 C 21
8 C 23
9 C 24
我想计算按 cat
分组的观察次数。
我试过了,但它也计算了类别 B 的 NA
。
df.1 <- df %>%
group_by(cat) %>%
dplyr::summarise(freq=n())
> df.1
# A tibble: 3 x 2
cat freq
<fct> <int>
1 A 3
2 B 2
3 C 4
我怎么能不数 NA
并简单地在该单元格中分配 NA
,如下所示?
> df.1
# A tibble: 3 x 2
cat freq
<fct> <int>
1 A 3
2 B NA
3 C 4
在逻辑向量(!is.na(id)
或 complete.cases(id)
)上使用 sum
,并将 NA
的 0 计数替换为 na_if
library(dplyr)
df %>%
group_by(cat) %>%
summarise(freq = na_if(sum(!is.na(id)), 0))
-输出
# A tibble: 3 × 2
cat freq
<chr> <int>
1 A 3
2 B NA
3 C 4
这是使用 ifelse
语句的替代方法:
library(dplyr)
df %>%
group_by(cat) %>%
mutate(freq = ifelse(!is.na(id), row_number(), NA)) %>%
summarise(freq=max(freq))
cat freq
<chr> <int>
1 A 3
2 B NA
3 C 4
我有一些行的计数练习 NA
。
这是一个示例数据集,其中包含 cat
和 id
个变量。
df <- data.frame(cat=c("A","A","A","B","B","C","C","C","C"),
id = c(11,12,13,NA,NA,21,21,23,24))
> df
cat id
1 A 11
2 A 12
3 A 13
4 B NA
5 B NA
6 C 21
7 C 21
8 C 23
9 C 24
我想计算按 cat
分组的观察次数。
我试过了,但它也计算了类别 B 的 NA
。
df.1 <- df %>%
group_by(cat) %>%
dplyr::summarise(freq=n())
> df.1
# A tibble: 3 x 2
cat freq
<fct> <int>
1 A 3
2 B 2
3 C 4
我怎么能不数 NA
并简单地在该单元格中分配 NA
,如下所示?
> df.1
# A tibble: 3 x 2
cat freq
<fct> <int>
1 A 3
2 B NA
3 C 4
在逻辑向量(!is.na(id)
或 complete.cases(id)
)上使用 sum
,并将 NA
的 0 计数替换为 na_if
library(dplyr)
df %>%
group_by(cat) %>%
summarise(freq = na_if(sum(!is.na(id)), 0))
-输出
# A tibble: 3 × 2
cat freq
<chr> <int>
1 A 3
2 B NA
3 C 4
这是使用 ifelse
语句的替代方法:
library(dplyr)
df %>%
group_by(cat) %>%
mutate(freq = ifelse(!is.na(id), row_number(), NA)) %>%
summarise(freq=max(freq))
cat freq
<chr> <int>
1 A 3
2 B NA
3 C 4