水平发生的次数

时间:2016-03-01 07:56:12

标签: r

我有下表:

Fashion       Travel       Home        Electronics Toys
Y             N            N           N           N     
N             N            N           Y           N     
Y             Y            Y           Y           N     
Y             N            N           N           N     
Y             Y            Y           Y           Y     
Y             Y            N           Y           Y     

我需要计算一行中出现“Y”的次数并将其存储在“过滤器”列中。

结果如下:

Fashion       Travel       Home        Electronics Toys Filter
Y             N            N           N           N    1 
N             N            N           Y           N    1 
Y             Y            Y           Y           N    4 
Y             N            N           N           N    1 
Y             Y            Y           Y           Y    5
Y             Y            N           Y           Y    4 

4 个答案:

答案 0 :(得分:2)

我们可以使用rowSums:

#data
df <- read.table(text = "Fashion       Travel       Home        Electronics Toys
Y             N            N           N           N     
N             N            N           Y           N     
Y             Y            Y           Y           N     
Y             N            N           N           N     
Y             Y            Y           Y           Y     
Y             Y            N           Y           Y", header = TRUE)


#add filter column
df$Filter <- rowSums(df == "Y")

#result
df
#   Fashion Travel Home Electronics Toys Filter
# 1       Y      N    N           N    N      1
# 2       N      N    N           Y    N      1
# 3       Y      Y    Y           Y    N      4
# 4       Y      N    N           N    N      1
# 5       Y      Y    Y           Y    Y      5
# 6       Y      Y    N           Y    Y      4

答案 1 :(得分:1)

我们也可以使用

df1$Filter <- Reduce(`+`,lapply(df1, `==`, "Y"))
df1$Filter
#[1] 1 1 4 1 5 4

答案 2 :(得分:0)

您可以使用stringr

    df$Filter <- apply(df, 1, function(i) sum(str_count(i, "Y")))
     df
#     x y Filter
#   1 Y N     1
#   2 N N     0
#   3 Y N     1
#   4 Y Y     2

答案 3 :(得分:0)

您可以使用apply功能查找每行length的{​​{1}}

Y