如何在 R 中为我的数据框添加列,包括另一列的计数,用于两个不同的列?
How to add columns to my data frame, including the counts of another columns , for two different column, in R?
我需要计算数据框中两个不同的列并将值添加为两个新列。
在下面的例子中,我想计算 x 和 y
ID l x y
1 s 1 E
1 s 2 NA
1 s 3 E
1 s 4 E
1 s 5 E
2 ss 1 NA
2 ss 2 E
2 ss 3 E
3 m 1 NA
3 m 2 E
3 m 3 NA
3 m 4 NA
3 m 5 E
3 m 6 E
3 m 7 NA
4 mm 1 E
4 mm 2 E
我需要输出如下所示:
ID l n.x n.y
1 s 5 4
2 ss 3 2
3 m 7 3
4 mm 2 2
如何使用count()?或其他代码?
谢谢
这是一个tidyverse
方法。您可以 group_by
您的 ID
列,并计算不是 NA
.
的行
library(tidyverse)
df %>%
group_by(ID, l) %>%
summarize(n.x = sum(!is.na(x)), n.y = sum(!is.na(y)), .groups = "drop")
# A tibble: 4 x 4
ID l n.x n.y
<int> <chr> <int> <int>
1 1 s 5 4
2 2 ss 3 2
3 3 m 7 3
4 4 mm 2 2
我需要计算数据框中两个不同的列并将值添加为两个新列。
在下面的例子中,我想计算 x 和 y
ID l x y
1 s 1 E
1 s 2 NA
1 s 3 E
1 s 4 E
1 s 5 E
2 ss 1 NA
2 ss 2 E
2 ss 3 E
3 m 1 NA
3 m 2 E
3 m 3 NA
3 m 4 NA
3 m 5 E
3 m 6 E
3 m 7 NA
4 mm 1 E
4 mm 2 E
我需要输出如下所示:
ID l n.x n.y
1 s 5 4
2 ss 3 2
3 m 7 3
4 mm 2 2
如何使用count()?或其他代码? 谢谢
这是一个tidyverse
方法。您可以 group_by
您的 ID
列,并计算不是 NA
.
library(tidyverse)
df %>%
group_by(ID, l) %>%
summarize(n.x = sum(!is.na(x)), n.y = sum(!is.na(y)), .groups = "drop")
# A tibble: 4 x 4
ID l n.x n.y
<int> <chr> <int> <int>
1 1 s 5 4
2 2 ss 3 2
3 3 m 7 3
4 4 mm 2 2