如何使用R计算多列上的唯一值?
假设我有以下df:如何使用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中的所有唯一变量(不是按列或行,我感兴趣的是单元格值) 因此,输出应如下所示:
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我会尽快接受答案