分组到所需数量的组
Grouping into desired number of groups
我有一个这样的数据框:
ID是主键,Apples是这个人拥有的苹果数量。
ID
Apples
E1
10
E2
5
E3
NA
E4
5
E5
8
E6
12
E7
NA
E8
4
E9
NA
E10
8
我想将 NA 和非 NA 值分成 2 个单独的组,并计算每个组的数量。我尝试了正常的 group_by(),但它没有给我想要的输出。
Fruits %>% group_by(Apples) %>% summarize(n())
Apples n()
<dbl> <int>
4 1
5 2
8 2
10 1
12 1
NA 3
我想要的输出:
Apples n()
<dbl> <int>
non-NA 7
NA 3
我们可以使用 group_by
为 NA
和 non-NA 创建一个组,我们也可以将其作为一个因素,以便我们可以在同一步骤中更改标签。然后,获取每个组的观察次数。
library(dplyr)
df %>%
group_by(grp = factor(is.na(Apples), labels=c("non-NA", "NA"))) %>%
summarise(`n()`= n())
# grp `n()`
# <fct> <int>
#1 non-NA 7
#2 NA 3
或者在 base R 中,我们可以使用 colSums
:
data.frame(Apples = c("non-NA", "NA"), n = c(colSums(!is.na(df))[2], colSums(is.na(df))[2]), row.names = NULL)
数据
df <- structure(list(ID = c("E1", "E2", "E3", "E4", "E5", "E6", "E7",
"E8", "E9", "E10"), Apples = c(10L, 5L, NA, 5L, 8L, 12L, NA,
4L, NA, 8L)), class = "data.frame", row.names = c(NA, -10L))
在base R
中,这可以用table
在逻辑向量
上完成
table(!is.na(df1$Apples))
我有一个这样的数据框: ID是主键,Apples是这个人拥有的苹果数量。
ID | Apples |
---|---|
E1 | 10 |
E2 | 5 |
E3 | NA |
E4 | 5 |
E5 | 8 |
E6 | 12 |
E7 | NA |
E8 | 4 |
E9 | NA |
E10 | 8 |
我想将 NA 和非 NA 值分成 2 个单独的组,并计算每个组的数量。我尝试了正常的 group_by(),但它没有给我想要的输出。
Fruits %>% group_by(Apples) %>% summarize(n())
Apples n()
<dbl> <int>
4 1
5 2
8 2
10 1
12 1
NA 3
我想要的输出:
Apples n()
<dbl> <int>
non-NA 7
NA 3
我们可以使用 group_by
为 NA
和 non-NA 创建一个组,我们也可以将其作为一个因素,以便我们可以在同一步骤中更改标签。然后,获取每个组的观察次数。
library(dplyr)
df %>%
group_by(grp = factor(is.na(Apples), labels=c("non-NA", "NA"))) %>%
summarise(`n()`= n())
# grp `n()`
# <fct> <int>
#1 non-NA 7
#2 NA 3
或者在 base R 中,我们可以使用 colSums
:
data.frame(Apples = c("non-NA", "NA"), n = c(colSums(!is.na(df))[2], colSums(is.na(df))[2]), row.names = NULL)
数据
df <- structure(list(ID = c("E1", "E2", "E3", "E4", "E5", "E6", "E7",
"E8", "E9", "E10"), Apples = c(10L, 5L, NA, 5L, 8L, 12L, NA,
4L, NA, 8L)), class = "data.frame", row.names = c(NA, -10L))
在base R
中,这可以用table
在逻辑向量
table(!is.na(df1$Apples))