Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为r中的每一行计算具有相同值/字符串的列_R - Fatal编程技术网

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

为r中的每一行计算具有相同值/字符串的列,r,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 F

假设我的数据(虚构),数据帧如下所示:

 > 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     
现在,我想添加两列,计算每行的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中的问题。

尝试
行和
减少

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

count\u TRUE尝试
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

count\u TRUE您可以使用
apply
sum

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

df$count\u TRUE您可以使用
apply
sum

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

谢谢大卫,这正是我想要的。请您也解释一下它是如何为特定的值工作的。例如,我只想计算每行值为4的列。它将
TRUE
FALSE
转换为
1
0
,然后将它们相加。如果你想用
4
计算所有列,你可以做
rowSums(df==4)
谢谢David,这正是我想要的。请您也解释一下它是如何为特定的值工作的。例如,我只想计算每行值为4的列。它将
TRUE
FALSE
转换为
1
0
,然后将它们相加。如果要使用
4
计算所有列,可以执行
行和(df==4)