我有下表:
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
答案 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