如何在R中合并频率表上的属性?

如何在R中合并频率表上的属性?,r,variables,merge,frequency-table,R,Variables,Merge,Frequency Table,假设我有两个变量。请参见下面的虚拟数据: 在250条记录中: 性 男:100 女:150 头发 短:110 长:140 下面提供了我当前使用的代码,为每个变量创建了一个不同的表: sexTable <- table(myDataSet$Sex) hairTable <- table(myDataSet$Hair) View(sexTable): |------------------|------------------| | Level | Frequ

假设我有两个变量。请参见下面的虚拟数据:

在250条记录中:

男:100

女:150

头发

短:110

长:140

下面提供了我当前使用的代码,为每个变量创建了一个不同的表:

sexTable <- table(myDataSet$Sex)
hairTable <- table(myDataSet$Hair)

View(sexTable):
|------------------|------------------|
|       Level      |    Frequency     |
|------------------|------------------|
|        Male      |       100        |
|       Female     |       150        |
|------------------|------------------|


View(hairTable)
|------------------|------------------|
|       Level      |    Frequency     |
|------------------|------------------|
|        Short     |       110        |
|        Long      |       140        |
|------------------|------------------|


在转换为
data.frame
之后,我们可以使用
bind\u rows

library(dplyr)
bind_rows(list(sex = as.data.frame(sexTable),
       Hair = as.data.frame(hairTable)), .id = 'Variables')

使用可复制的示例

tbl1 <- table(mtcars$cyl)
tbl2 <- table(mtcars$vs)
bind_rows(list(sex = as.data.frame(tbl1), 
       Hair = as.data.frame(tbl2)), .id = 'Variables')%>% 
   mutate(Variables = replace(Variables, duplicated(Variables), ""))

tbl1这是一个很好的建议。感谢您,这些值按预期返回,尽管在打印结果后出现以下错误:
警告消息:1:在绑定_行中(x,.id):因子级别不相等:强制到字符2:在绑定_行中(x,.id):绑定字符和因子向量,强制到字符向量3:在绑定_行中(x,.id):绑定字符和因子向量,强制为字符向量
。这意味着什么?此外,当水平具有相同的变量时,不应重复该变量。(如我的问题所示,男性和女性都有性别差异)@LoizosVasileiou这只是一个友好的警告。发生这种情况是因为其中一个数据集具有不同的列类型(因子),因此它被转换为
character
类。很抱歉再次询问,如果我还需要在变量名称附近提供N(N of Sex=250),我应该搜索什么。问题已更新。@Loizosvasileyou为此,我不会将值替换为空白。如果将变量保持为
bind_行(list(sex=as.data.frame(tbl1),Hair=as.data.frame(tbl2)),.id='Variables')%%>%filter(Variables='sex',Freq==11)%%>%pull(Freq)\[1]11
tbl1 <- table(mtcars$cyl)
tbl2 <- table(mtcars$vs)
bind_rows(list(sex = as.data.frame(tbl1), 
       Hair = as.data.frame(tbl2)), .id = 'Variables')%>% 
   mutate(Variables = replace(Variables, duplicated(Variables), ""))
dat1 <- transform(as.data.frame(tbl1), 
  Freq = sprintf('%d (%0.2f%%)', Freq,   as.numeric(prop.table(tbl1) * 100)))
dat2 <- transform(as.data.frame(tbl2), 
  Freq = sprintf('%d (%0.2f%%)', Freq,   as.numeric(prop.table(tbl2) * 100)))
bind_rows(list(sex = dat1, Hair = dat2, .id = 'Variables')