r - 计算选定列的非空白单元格数量

标签 r

我想添加另一列来计算 r 中所选列的非空白值。我的工作方式如下。

> mydata29<-read.csv("C:\\zawadi\\exam.CSV",header=T,sep=",")
> mydata29
  ID  NAMES SCIENCE MATHS ENG SWAHILI SSTUDIES
1  1   JOHN      80    56  88      NA       90
2  2   JANE     100    56  64      67       87
3  3   MARY      NA    74  NA      NA       NA
4  4 JOSEPH      70    78  45      44       54
5  5  JOYCE      60    90  89      89       78
6  6   JUNE      NA    NA  67      52       NA
> length(mydata29[,c(3:7)])
[1] 5
> mydata29$subjectsdone<-length(mydata29[,c(3:7)])
> mydata29$subjectsdone
[1] 5 5 5 5 5 5
> mydata29
  ID  NAMES SCIENCE MATHS ENG SWAHILI SSTUDIES subjectsdone
1  1   JOHN      80    56  88      NA       90            5
2  2   JANE     100    56  64      67       87            5
3  3   MARY      NA    74  NA      NA       NA            5
4  4 JOSEPH      70    78  45      44       54            5
5  5  JOYCE      60    90  89      89       78            5
6  6   JUNE      NA    NA  67      52       NA            5
> mydata29$subjectsdone<-length(mydata29[,c(3:7)],na.rm=TRUE)
Error in length(mydata29[, c(3:7)], na.rm = TRUE) : 
  2 arguments passed to 'length' which requires 1

我想要的输出是

  ID  NAMES SCIENCE MATHS ENG SWAHILI SSTUDIES subjectsdone
1  1   JOHN      80    56  88      NA       90            4
2  2   JANE     100    56  64      67       87            5
3  3   MARY      NA    74  NA      NA       NA            1
4  4 JOSEPH      70    78  45      44       54            5
5  5  JOYCE      60    90  89      89       78            5
6  6   JUNE      NA    NA  67      52       NA            2

最佳答案

您可以在所选列的逻辑矩阵 (!is.na(...)) 上尝试 rowSums 并将结果分配给新列(“subjectsdone”) ”)

mydata29$subjectsdone <- rowSums(!is.na(mydata29[-(1:2)]))
mydata29
#   ID  NAMES SCIENCE MATHS ENG SWAHILI SSTUDIES subjectsdone
#1  1   JOHN      80    56  88      NA       90            4
#2  2   JANE     100    56  64      67       87            5
#3  3   MARY      NA    74  NA      NA       NA            1
#4  4 JOSEPH      70    78  45      44       54            5
#5  5  JOYCE      60    90  89      89       78            5
#6  6   JUNE      NA    NA  67      52       NA            2

数据

mydata29 <- structure(list(ID = 1:6, NAMES = c("JOHN", "JANE", 
"MARY",    "JOSEPH", 
"JOYCE", "JUNE"), SCIENCE = c(80L, 100L, NA, 70L, 60L, NA),
MATHS = c(56L, 
56L, 74L, 78L, 90L, NA), ENG = c(88L, 64L, NA, 45L, 89L, 67L), 
SWAHILI = c(NA, 67L, NA, 44L, 89L, 52L), SSTUDIES = c(90L, 
87L, NA, 54L, 78L, NA)), .Names = c("ID", "NAMES", "SCIENCE", 
"MATHS", "ENG", "SWAHILI", "SSTUDIES"), class = "data.frame", 
row.names = c("1", "2", "3", "4", "5", "6"))

关于r - 计算选定列的非空白单元格数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29537529/

相关文章:

Rmarkdown 带有 pdf 输出和纯 LaTeX 代码块

r - R和ggplot2中的分数(除以或除以)的表示法

r - Googleway 不考虑旅行时间的交通(路线搜索)

r - 如何将点添加到堆叠条形图

r - 用cat()和paste()串联字符串之间有什么区别?

在ggplot2中旋转图例

删除fill.contour图例中的线条

加载库时 R rgl 包错误

r - 有没有与 SAS PWENCODE 类似的 R 函数?

r - 如何将季度数据的日期系列读入 R?