计算r中每行具有相同值/字符串的列

时间:2015-02-04 10:15:05

标签: r

说出我的数据(虚构),数据框如下:

 > 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。

的问题

2 个答案:

答案 0 :(得分:4)

尝试rowSumsReduce

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)

您可以使用applysum

df$count_TRUE <- apply(df, 1,sum); 
df$count_FALSE <- (ncol(df)-1)-df$count_TRUE;