如何使用R计算多列上的唯一值?

如何使用R计算多列上的唯一值?,r,dataframe,count,R,Dataframe,Count,假设我有以下df: 1 2 3 home, work work, home home, work leisure, work work, home, leisure work, home home, leisure work, home home, work 我想计算整个data.frame中的所有唯一变量(不是按列或行,我感兴趣的是单元格值) 因此,输出应如下所示:

假设我有以下df:

1               2                    3
home, work      work, home           home, work
leisure, work   work, home, leisure  work, home
home, leisure   work, home           home, work
我想计算整个
data.frame
中的所有唯一变量(不是按列或行,我感兴趣的是单元格值)

因此,输出应如下所示:

                    freq
home, work          3
leisure, work       1
home, leisure       1
work, home          3
work, home, leisure 1
我还没有找到一种方法来做到这一点。
count()
函数似乎只适用于单列


非常感谢您的帮助:)

您可以
取消列表
并使用
表格
获取基数R中的计数:

stack(table(unlist(df)))
#Same as
#stack(table(as.matrix(df)))

如果您喜欢
tidyverse
使用
pivot\u longer
count
获取长格式数据

df %>%
  tidyr::pivot_longer(cols = everything()) %>%
  dplyr::count(value)

# A tibble: 5 x 2
#  value                 n
#  <chr>             <int>
#1 home,leisure          1
#2 home,work             3
#3 leisure,work          1
#4 work,home             3
#5 work,home,leisure     1
df%>%
tidyr::pivot_更长(cols=everything())%>%
dplyr::计数(值)
#一个tibble:5x2
#值n
#               
#1家,休闲1家
#2家庭,3工作
#3休闲、工作1
#4工作,3家庭
#5工作、家庭、休闲1
数据

df <- structure(list(X1 = c("home,work", "leisure,work", "home,leisure"
), X2 = c("work,home", "work,home,leisure", "work,home"), X3 = c("home,work", 
"work,home", "home,work")), class = "data.frame", row.names = c(NA, -3L))

df您可以
取消列表
并使用
表格
获取基数R中的计数:

stack(table(unlist(df)))
#Same as
#stack(table(as.matrix(df)))

如果您喜欢
tidyverse
使用
pivot\u longer
count
获取长格式数据

df %>%
  tidyr::pivot_longer(cols = everything()) %>%
  dplyr::count(value)

# A tibble: 5 x 2
#  value                 n
#  <chr>             <int>
#1 home,leisure          1
#2 home,work             3
#3 leisure,work          1
#4 work,home             3
#5 work,home,leisure     1
df%>%
tidyr::pivot_更长(cols=everything())%>%
dplyr::计数(值)
#一个tibble:5x2
#值n
#               
#1家,休闲1家
#2家庭,3工作
#3休闲、工作1
#4工作,3家庭
#5工作、家庭、休闲1
数据

df <- structure(list(X1 = c("home,work", "leisure,work", "home,leisure"
), X2 = c("work,home", "work,home,leisure", "work,home"), X3 = c("home,work", 
"work,home", "home,work")), class = "data.frame", row.names = c(NA, -3L))

df使用
tidyverse
,我们可以使用
gather

library(dplyr)
library(tidyr)
df %>% 
   gather %>% 
   count(value)
#              value n
#1      home,leisure 1
#2         home,work 3
#3      leisure,work 1
#4         work,home 3
#5 work,home,leisure 1
数据
df使用
tidyverse
,我们可以使用
gather

library(dplyr)
library(tidyr)
df %>% 
   gather %>% 
   count(value)
#              value n
#1      home,leisure 1
#2         home,work 3
#3      leisure,work 1
#4         work,home 3
#5 work,home,leisure 1
数据
df哦,哇,太快了!谢谢您!:D我会尽快接受答案哇,太快了!谢谢您!:D我会尽快接受答案