以下是我正在处理的数据样本
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.NPA
和Count.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 [[i]],...):参数的“类型”(字符)无效
并且输出给出一些非空值,而期望的输出是对应于每个Manager
的N / A.
但是当我为Exp.in.ED
运行相同的代码时,它会给出正确的结果。
答案 0 :(得分: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