R求和因子

时间:2012-07-10 10:53:59

标签: r sum r-factor

我根据以下因素分割了一些数据:

 a <- factor(data$fact)
 b <- split(data,a)

现在我想在一起添加一些因素,例如

tot <- b$A+b$B

但我收到以下错误,

"sum" not meaningful for factors

任何帮助都会很棒。

aaa val1 val2 ...
AAA
BBB
BBB
CCC
ccc

现在,如果我分成三个因素,我就有三个。但我想要例如aaa和ccc一起考虑。这个测量应该总结另一列中的值。

由于

2 个答案:

答案 0 :(得分:1)

在拆分之前创建一个新的因子变量:

# Make up some data
df = data.frame(Cases = sample(LETTERS[1:5], 10, replace=TRUE),
                Set1 = 1:10, Set2 = 11:20)
# Duplicate your cases column
df$Cases_2 = df$Cases
# Create a new set of factor levels
levels(df$Cases_2) <- ifelse(levels(df$Cases_2) %in% c("A","B"), 
                             "AB", levels(df$Cases_2))
temp = split(df[-c(1, 4)], df$Cases_2)
temp
# $AB
#   Set1 Set2
# 3    3   13
# 5    5   15
# 6    6   16
# 8    8   18
# 
# $C
#   Set1 Set2
# 4    4   14
# 9    9   19
# 
# $D
#    Set1 Set2
# 2     2   12
# 7     7   17
# 10   10   20
# 
# $E
#   Set1 Set2
# 1    1   11

然后使用lapply计算colSums

lapply(temp, colSums)
# $AB
# Set1 Set2 
#   22   62 
# 
# $C
# Set1 Set2 
#   13   33 
# 
# $D
# Set1 Set2 
#   19   49 
# 
# $E
# Set1 Set2 
#    1   11

答案 1 :(得分:0)

您可能希望使用rbind组合生成的数据框:

tot <- rbind(b$A, b$B)