嗨,并为标题道歉,我不知道如何解释我的问题。 我有一张这样的桌子:
color.1 color.2 color.3 color.4
1 red blue red red
2 blue blue
3 green blue green
4 blue blue
我有兴趣了解每个元组重复的次数。例如,在这种情况下,它将是:
red blue red red = 1
blue blue = 2
green blue green = 1
我尝试使用expand
函数和summary
并且它没有用。
编辑:我刚刚发现函数table
做了类似于我想要的事情但不是我想要的表格格式...是否可以使用内置函数来完成它?或任何包裹?
答案 0 :(得分:1)
这不是您要求的确切格式,但只需运行table(df)
即可获得所需的数据。这是我的虚拟例子:
>xx=data.frame(A=c("a",NA,'a','c'),B=c('b','d','a',NA))
> table(xx)
B
A a b d
a 1 1 0
c 0 0 0
答案 1 :(得分:1)
您可以先折叠行,然后应用table
:
> table(apply(d,1,paste,collapse=' '))
blue - - blue green - blue green red blue red red
2 1 1
其中d
是您的样本数据集,
d <- structure(list(color.1 = structure(c(3L, 1L, 2L, 1L), .Label = c("blue",
"green", "red"), class = "factor"), color.2 = structure(c(2L,
1L, 1L, 1L), .Label = c("-", "blue"), class = "factor"), color.3 = structure(c(3L,
1L, 2L, 1L), .Label = c("-", "blue", "red"), class = "factor"),
color.4 = structure(c(3L, 1L, 2L, 1L), .Label = c("blue",
"green", "red"), class = "factor")), .Names = c("color.1",
"color.2", "color.3", "color.4"), class = "data.frame", row.names = c(NA,
-4L))
PS:David Arenburg在下面的评论中提出了同样的想法,这是一个更加优雅和有效的实现:
table(do.call(paste, d))