r行中的搜索值

r行中的搜索值,r,count,R,Count,如何在一行中搜索特定值。例如,对于此数据 a <- c("a", "a", "b", "c") b <- c("b", "a", "b", "d") c <- c("c", "a", "b", "c") d <- c("a", "a", "b", "a") x <- data.frame(cbind(a,b,c,d)) head(x) a你是说这样吗?不完全清楚您希望输出是什么样子 x$A <- apply(x,1,function(x) len

如何在一行中搜索特定值。例如,对于此数据

 a <- c("a", "a", "b", "c")
 b <- c("b", "a", "b", "d")
 c <- c("c", "a", "b", "c")
 d <- c("a", "a", "b", "a")
 x <- data.frame(cbind(a,b,c,d))
 head(x)

a你是说这样吗?不完全清楚您希望输出是什么样子

x$A <- apply(x,1,function(x) length(grep("a",x)))
x$B <- apply(x,1,function(x) length(grep("b",x)))
x$C <- apply(x,1,function(x) length(grep("c",x)))
x$D <- apply(x,1,function(x) length(grep("d",x)))

> x
 a b c d A B C D
 1 a b c a 2 1 1 0
 2 a a a a 4 0 0 0
 3 b b b b 0 4 0 0
 4 c d c a 1 0 2 1
x$A您还可以:

library(reshape2)
df1 <- as.data.frame.matrix(table(melt(as.matrix(x))[,c(1,3)]))
cbind(x,df1)
#  a b c d a b c d
#1 a b c a 2 1 1 0
#2 a a a a 4 0 0 0
#3 b b b b 0 4 0 0
#4 c d c a 1 0 2 1
library(重塑2)

df1另一种坚持到底的方法:

f<-function(x) table(factor(unlist(x),levels=letters[1:4]))
df1<-t(apply(x,1,f))
cbind(x,df1)

  a b c d a b c d
1 a b c a 2 1 1 0
2 a a a a 4 0 0 0
3 b b b b 0 4 0 0
4 c d c a 1 0 2 1

f与J.R.的答案相似,但有点不同:

s <- split(unlist(x), rep.int(seq_len(nrow(x)), nrow(x)))    
cbind(x, do.call(rbind, Map(table, s)))
#   a b c d a b c d
# 1 a b c a 2 1 1 0
# 2 a a a a 4 0 0 0
# 3 b b b b 0 4 0 0
# 4 c d c a 1 0 2 1

请包括您想要的示例输出
cbind(x, t(vapply(s, table, integer(4L))))
#   a b c d a b c d
# 1 a b c a 2 1 1 0
# 2 a a a a 4 0 0 0
# 3 b b b b 0 4 0 0
# 4 c d c a 1 0 2 1