说出我的数据(虚构),数据框如下:
> head(data)
mpg_H cyl_G disp_G
Mazda RX4 TRUE TRUE TRUE
Mazda RX4 Wag TRUE FALSE FALSE
Datsun 710 FALSE FALSE FALSE
Hornet 4 Drive FALSE TRUE TRUE
Hornet Sportabout TRUE TRUE TRUE
Valiant TRUE TRUE FALSE
现在,我想要添加2个列,这些列将计算每行的TRUE和FALSE数,如下所示:
> head(data)
mpg_H cyl_G disp_G count_TRUE count_FALSE
Mazda RX4 TRUE TRUE TRUE 3 0
Mazda RX4 Wag TRUE FALSE FALSE 1 2
Datsun 710 FALSE FALSE FALSE 0 3
Hornet 4 Drive FALSE TRUE TRUE 2 1
Hornet Sportabout TRUE TRUE TRUE 3 0
Valiant TRUE TRUE FALSE 2 1
请帮我解决R。
的问题答案 0 :(得分:4)
尝试rowSums
或Reduce
count_TRUE <- rowSums(df) # Or count_TRUE <- Reduce(`+`, df)
df[c("count_TRUE", "count_FALSE")] <- cbind(count_TRUE, ncol(df) - count_TRUE)
df
# mpg_H cyl_G disp_G count_TRUE count_FALSE
# Mazda RX4 TRUE TRUE TRUE 3 0
# Mazda RX4 Wag TRUE FALSE FALSE 1 2
# Datsun 710 FALSE FALSE FALSE 0 3
# Hornet 4 Drive FALSE TRUE TRUE 2 1
# Hornet Sportabout TRUE TRUE TRUE 3 0
# Valiant TRUE TRUE FALSE 2 1
答案 1 :(得分:1)
您可以使用apply
和sum
。
df$count_TRUE <- apply(df, 1,sum);
df$count_FALSE <- (ncol(df)-1)-df$count_TRUE;