首页 > 解决方案 > 在R中添加包含重复字符串数总和的行

问题描述

我有兴趣知道每列有多少个零(“0”)。如何生成包含每列“0”和非零数之和的行?

Name <- c("G1", "G2", "G3", "G4","G5", "G6")
Obs1 <- c(0, 1, 4, 7, 0, 2)
Obs2 <- c(6, 1, 0, 3, 0, 1)
Obs3 <- c(0, 0, 0, 8, 0, 0)
df <- data.frame(Name, Obs1, Obs2, Obs3)

期望的输出:

Name        Obs1    Obs2   Obs3

Zeros        2       2      5
Non-zeros    4       4      1
G1           0       6      0
G2           1       1      0
G3           4       0      0
G4           7       3      8
G5           0       0      0
G6           2       1      0

标签: rdplyr

解决方案


使用基础 R

df <- rbind(sapply(df, function(x) sum(x == 0)), sapply(df, function(x) sum(x != 0)),df)
df$Name[c(1,2)] <- c('Zero','Non-Zero')
df
      Name Obs1 Obs2 Obs3
1     Zero    2    2    5
2 Non-Zero    4    4    1
3       G1    0    6    0
4       G2    1    1    0
5       G3    4    0    0
6       G4    7    3    8
7       G5    0    0    0
8       G6    2    1    0
> 

推荐阅读