简化数据的前两列的最简单方法是什么,以便使用新的变量freq计算每一行?
换句话说,请从这里开始:
var1 var2
1 a d
2 b e
3 b e
4 c f
5 c f
6 c f
对此:
var1 var2 freq
1 a d 1
2 b e 2
3 c f 3
答案 0 :(得分:3)
您可能没有仔细查看dplyr
包(您标记它:))。最简单的方法是......
df <-data.frame(freq1 = c("a","b","b","c","c","c"),
freq2 = c("d","e","e","f","f","f"))
df %>% group_by(freq1,freq2) %>% tally()
输出
freq1 freq2 n
(fctr) (fctr) (int)
1 a d 1
2 b e 2
3 c f 3
答案 1 :(得分:0)
我不知道这是否最简单,但如果数据不复杂,您可以使用paste0(collapse="_")
创建唯一代码,然后使用简单的table
命令通过该唯一代码进行聚合
data<-read.csv("data.csv")
x<-apply(data,1,function(x) paste0(x,collapse = "_"))
table(x)
答案 2 :(得分:0)
如果由于某种原因您不想使用dplyr
软件包的count
函数,另一种方法是使用ftable
生成的列联表功能和过滤0次发生的意外事件。例如:
df <- data.frame(freq1 = c("a", "b", "b", "c", "c", "c"),
freq2 = c("d", "e", "e", "f", "f", "f"))
x <- as.data.frame(ftable(df))
x <- x[x$Freq > 0, ]
这会产生输出:
freq1 freq2 Freq
1 a d 1
5 b e 2
9 c f 3