2016-10-03 63 views
0

以下是数据的我的工作汇总上的空行R上

Manager Exp.in.ED Count.in.ED Exp.in.NPA Count.in.NPA 
A   12   1   N/A   N/A 
B   14   2   N/A   N/A 
C   12   1   N/A   N/A 
A   43   3   N/A   N/A 
B   12   1   N/A   N/A 
C   54   4   N/A   N/A 
B   23   1   N/A   N/A 
A   15   3   N/A   N/A 

因此,作为这些数据的Exp.in.NPACount.in.NPA是空列样品。因此,当我尝试使用下面的代码

data <- read.csv(file.choose(), header = TRUE) 
NPA_exp <- aggregate(data$Exp.in.NPA ~ data$Manager, 
        FUN = sum, na.action = na.pass, na.rm = TRUE) 

在控制台聚集他们来说,这是表示FUN

错误(X [我],...):无效“类型'(字符)

并且输出给出了一些非空值,而期望的输出是对应于每个Manager的N/A。

但是,当我运行相同的代码Exp.in.ED它给出了正确的结果。

回答

0

问题出在N/A,读数为character(严格为factor,默认值为read.csv)。他们需要转换为NA

这是可以做到的,例如,

data <- data.table::fread("Manager Exp.in.ED Count.in.ED Exp.in.NPA Count.in.NPA 
A   12   1   N/A   N/A 
B   14   2   N/A   N/A 
C   12   1   N/A   N/A 
A   43   3   N/A   N/A 
B   12   1   N/A   N/A 
C   54   4   N/A   N/A 
B   23   1   N/A   N/A 
A   15   3   N/A   N/A", 
na.strings = "N/A") 

print(data) 
    Manager Exp.in.ED Count.in.ED Exp.in.NPA Count.in.NPA 
1:  A  12   1   NA   NA 
2:  B  14   2   NA   NA 
3:  C  12   1   NA   NA 
4:  A  43   3   NA   NA 
5:  B  12   1   NA   NA 
6:  C  54   4   NA   NA 
7:  B  23   1   NA   NA 
8:  A  15   3   NA   NA 

现在都聚集做的工作:

aggregate(data$Exp.in.NPA ~ data$Manager, 
      FUN = sum, na.action = na.pass, na.rm = TRUE) 
    data$Manager data$Exp.in.NPA 
1   A    0 
2   B    0 
3   C    0 

aggregate(data$Exp.in.ED ~ data$Manager, 
      FUN = sum, na.action = na.pass, na.rm = TRUE) 
    data$Manager data$Exp.in.ED 
1   A    70 
2   B    49 
3   C    66